{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "mCOJwSTxfuMP"
   },
   "source": [
    "#  <span style=\"color:orange\">Multiclass Classification Tutorial (MCLF101) - Level Beginner</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "h0Bb-8rXfuMS"
   },
   "source": [
    "**Date Updated: Feb 25, 2020**\n",
    "\n",
    "# 1.0 Tutorial Objective\n",
    "Welcome to the Multiclass Classification Tutorial (MCLF101) - Level Beginner. This tutorial assumes that you are new to PyCaret and looking to get started with Multiclass Classification using the `pycaret.classification` Module.\n",
    "\n",
    "In this tutorial we will learn:\n",
    "\n",
    "\n",
    "* **Getting Data:**  How to import data from PyCaret repository\n",
    "* **Setting up Environment:**  How to setup an experiment in PyCaret and get started with building multiclass models\n",
    "* **Create Model:**  How to create a model, perform stratified cross validation and evaluate classification metrics\n",
    "* **Tune Model:**  How to automatically tune the hyper-parameters of a multiclass model\n",
    "* **Plot Model:**  How to analyze model performance using various plots\n",
    "* **Finalize Model:** How to finalize the best model at the end of the experiment\n",
    "* **Predict Model:**  How to make predictions on new / unseen data\n",
    "* **Save / Load Model:**  How to save / load a model for future use\n",
    "\n",
    "Read Time : Approx. 30 Minutes\n",
    "\n",
    "\n",
    "## 1.1 Installing PyCaret\n",
    "The first step to get started with PyCaret is to install pycaret. Installation is easy and will only take a few minutes. Follow the instructions below:\n",
    "\n",
    "#### Installing PyCaret in Local Jupyter Notebook\n",
    "`pip install pycaret`  <br />\n",
    "\n",
    "#### Installing PyCaret on Google Colab or Azure Notebooks\n",
    "`!pip install pycaret`\n",
    "\n",
    "\n",
    "## 1.2 Pre-Requisites\n",
    "- Python 3.x\n",
    "- Latest version of pycaret\n",
    "- Internet connection to load data from pycaret's repository\n",
    "- Basic Knowledge of Multiclass Classification\n",
    "\n",
    "## 1.3 For Google colab users:\n",
    "If you are running this notebook on Google colab, run the following code at top of your notebook to display interactive visuals.<br/>\n",
    "<br/>\n",
    "`from pycaret.utils import enable_colab` <br/>\n",
    "`enable_colab()`\n",
    "\n",
    "## 1.4 See also:\n",
    "- __[Binary Classification Tutorial (CLF101) - Level Beginner](https://github.com/pycaret/pycaret/blob/master/Tutorials/Binary%20Classification%20Tutorial%20Level%20Beginner%20-%20%20CLF101.ipynb)__\n",
    "- __[Binary Classification Tutorial (CLF102) - Level Intermediate](https://github.com/pycaret/pycaret/blob/master/Tutorials/Binary%20Classification%20Tutorial%20Level%20Intermediate%20-%20CLF102.ipynb)__\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "VDM6TNTrfuMV"
   },
   "source": [
    "# 2.0 What is Multiclass Classification?\n",
    "Multiclass classification is a supervised machine learning technique where the goal is to classify instances into one of three or more classes. (Classifying instances into one of two classes is called Binary Classification). Multiclass classification should not be confused with multi-label classification, where multiple labels are to be predicted for each instance.\n",
    "\n",
    "__[Learn More about Multiclass Classification](https://towardsdatascience.com/machine-learning-multiclass-classification-with-imbalanced-data-set-29f6a177c1a)__"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "FEybtNqwfuMY"
   },
   "source": [
    "# 3.0 Overview of the Classification Module in PyCaret\n",
    "PyCaret's classification module (`pycaret.classification`) is a supervised machine learning module which is used for classifying the elements into binary or multinomial groups based on various techniques and algorithms. \n",
    "\n",
    "The PyCaret classification module can be used for Binary or Multi-class classification problems. It has over 18 algorithms and 14 plots to analyze the performance of models. Be it hyper-parameter tuning, ensembling or advanced techniques like stacking, PyCaret's classification module has it all."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "x2KiOHinfuMa"
   },
   "source": [
    "# 4.0 Dataset for the Tutorial"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "B0re-c4CfuMe"
   },
   "source": [
    "For this tutorial we will use the **Iris Dataset** from UCI. This is perhaps the best known database to be found in the pattern recognition literature. The data set contains 3 classes of 50 instances each, where each class refers to a type of iris plant. Short descriptions of each column are as follows:\n",
    "\n",
    "- **sepal_length:** Length of Sepal\n",
    "- **sepal_width:** Width of Sepal\n",
    "- **petal_length:** Length of Petal\n",
    "- **petal_width:** Width of Petal\n",
    "- **species:** One of three class (Setosa, Versicolour, Virginica) `Target Column`\n",
    "\n",
    "#### Dataset Acknowledgement:\n",
    "Creator: R.A. Fisher, Donor : Michael Marshall (MARSHALL%PLU '@' io.arc.nasa.gov)\n",
    "\n",
    "The original dataset and data dictionary can be __[found here.](https://archive.ics.uci.edu/ml/datasets/Iris)__ "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "e-NQVSpIfuMi"
   },
   "source": [
    "# 5.0 Getting the Data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "LGV6PMCtfuMl"
   },
   "source": [
    "You can download the data from the original source __[found here](https://archive.ics.uci.edu/ml/datasets/Iris)__ and load it using pandas __[(Learn How)](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html)__ or you can use PyCaret's data respository to load the data using the `get_data()` function (This will require an internet connection)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 204
    },
    "colab_type": "code",
    "id": "wEki9ZbCfuMm",
    "outputId": "edcba15b-233e-476c-d119-f9a07863f0df"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal_length</th>\n",
       "      <th>sepal_width</th>\n",
       "      <th>petal_length</th>\n",
       "      <th>petal_width</th>\n",
       "      <th>species</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5.1</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Iris-setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Iris-setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.7</td>\n",
       "      <td>3.2</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Iris-setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.6</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Iris-setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Iris-setosa</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   sepal_length  sepal_width  petal_length  petal_width      species\n",
       "0           5.1          3.5           1.4          0.2  Iris-setosa\n",
       "1           4.9          3.0           1.4          0.2  Iris-setosa\n",
       "2           4.7          3.2           1.3          0.2  Iris-setosa\n",
       "3           4.6          3.1           1.5          0.2  Iris-setosa\n",
       "4           5.0          3.6           1.4          0.2  Iris-setosa"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from pycaret.datasets import get_data\n",
    "dataset = get_data('iris')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "mNFEXhMsfuMs",
    "outputId": "f5705470-be5f-429d-faea-6caa1f23ee1e"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(150, 5)"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#check the shape of data\n",
    "dataset.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "o4C_ep4RfuMx"
   },
   "source": [
    "In order to demonstrate the `predict_model()` function on unseen data, a sample of 15 records has been withheld from the original dataset to be used for predictions. This should not be confused with a train/test split as this particular split is performed to simulate a real life scenario. Another way to think about this is that these 15 records were not available at the time when the machine learning experiment was performed."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 51
    },
    "colab_type": "code",
    "id": "Ttyujuo7fuMy",
    "outputId": "61f75ccf-541b-4efa-d00a-e0a95bf4017e"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Data for Modeling: (135, 5)\n",
      "Unseen Data For Predictions: (15, 5)\n"
     ]
    }
   ],
   "source": [
    "data = dataset.sample(frac=0.9, random_state=786).reset_index(drop=True)\n",
    "data_unseen = dataset.drop(data.index).reset_index(drop=True)\n",
    "\n",
    "print('Data for Modeling: ' + str(data.shape))\n",
    "print('Unseen Data For Predictions: ' + str(data_unseen.shape))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "QXG8qOz5fuM3"
   },
   "source": [
    "# 6.0 Setting up the Environment in PyCaret"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "nhFahBmtfuM5"
   },
   "source": [
    "The `setup()` function initializes the environment in pycaret and creates the transformation pipeline to prepare the data for modeling and deployment. `setup()` must be called before executing any other function in pycaret. It takes two mandatory parameters: a pandas dataframe and the name of the target column. All other parameters are optional and are used to customize the pre-processing pipeline (we will see them in later tutorials).\n",
    "\n",
    "When `setup()` is executed, PyCaret's inference algorithm will automatically infer the data types for all features based on certain properties. The data type should be inferred correctly but this is not always the case. To account for this, PyCaret displays a table containing the features and their inferred data types after `setup()` is executed. If all of the data types are correctly identified `enter` can be pressed to continue or `quit` can be typed to end the expriment. Ensuring that the data types are correct is of fundamental importance in PyCaret as it automatically performs a few pre-processing tasks which are imperative to any machine learning experiment. These tasks are performed differently for each data type which means it is very important for them to be correctly configured.\n",
    "\n",
    "In later tutorials we will learn how to overwrite PyCaret's infered data type using the `numeric_features` and `categorical_features` parameters in `setup()`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "hKstfIA0fuM7"
   },
   "outputs": [],
   "source": [
    "from pycaret.classification import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 956
    },
    "colab_type": "code",
    "id": "9PcuxLQSfuNC",
    "outputId": "68abc9ac-a0d2-4b33-f524-9cabd0256fcc",
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " \n",
      "Setup Succesfully Completed!\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<style  type=\"text/css\" >\n",
       "</style><table id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7\" ><thead>    <tr>        <th class=\"blank level0\" ></th>        <th class=\"col_heading level0 col0\" >Description</th>        <th class=\"col_heading level0 col1\" >Value</th>    </tr></thead><tbody>\n",
       "                <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row0\" class=\"row_heading level0 row0\" >0</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row0_col0\" class=\"data row0 col0\" >session_id</td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row0_col1\" class=\"data row0 col1\" >123</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row1\" class=\"row_heading level0 row1\" >1</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row1_col0\" class=\"data row1 col0\" >Target Type</td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row1_col1\" class=\"data row1 col1\" >Multiclass</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row2\" class=\"row_heading level0 row2\" >2</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row2_col0\" class=\"data row2 col0\" >Label Encoded</td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row2_col1\" class=\"data row2 col1\" >Iris-setosa: 0, Iris-versicolor: 1, Iris-virginica: 2</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row3\" class=\"row_heading level0 row3\" >3</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row3_col0\" class=\"data row3 col0\" >Original Data</td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row3_col1\" class=\"data row3 col1\" >(135, 5)</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row4\" class=\"row_heading level0 row4\" >4</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row4_col0\" class=\"data row4 col0\" >Missing Values </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row4_col1\" class=\"data row4 col1\" >False</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row5\" class=\"row_heading level0 row5\" >5</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row5_col0\" class=\"data row5 col0\" >Numeric Features </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row5_col1\" class=\"data row5 col1\" >4</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row6\" class=\"row_heading level0 row6\" >6</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row6_col0\" class=\"data row6 col0\" >Categorical Features </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row6_col1\" class=\"data row6 col1\" >0</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row7\" class=\"row_heading level0 row7\" >7</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row7_col0\" class=\"data row7 col0\" >Ordinal Features </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row7_col1\" class=\"data row7 col1\" >False</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row8\" class=\"row_heading level0 row8\" >8</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row8_col0\" class=\"data row8 col0\" >High Cardinality Features </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row8_col1\" class=\"data row8 col1\" >False</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row9\" class=\"row_heading level0 row9\" >9</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row9_col0\" class=\"data row9 col0\" >High Cardinality Method </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row9_col1\" class=\"data row9 col1\" >None</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row10\" class=\"row_heading level0 row10\" >10</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row10_col0\" class=\"data row10 col0\" >Sampled Data</td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row10_col1\" class=\"data row10 col1\" >(135, 5)</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row11\" class=\"row_heading level0 row11\" >11</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row11_col0\" class=\"data row11 col0\" >Transformed Train Set</td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row11_col1\" class=\"data row11 col1\" >(94, 4)</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row12\" class=\"row_heading level0 row12\" >12</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row12_col0\" class=\"data row12 col0\" >Transformed Test Set</td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row12_col1\" class=\"data row12 col1\" >(41, 4)</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row13\" class=\"row_heading level0 row13\" >13</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row13_col0\" class=\"data row13 col0\" >Numeric Imputer </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row13_col1\" class=\"data row13 col1\" >mean</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row14\" class=\"row_heading level0 row14\" >14</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row14_col0\" class=\"data row14 col0\" >Categorical Imputer </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row14_col1\" class=\"data row14 col1\" >constant</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row15\" class=\"row_heading level0 row15\" >15</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row15_col0\" class=\"data row15 col0\" >Normalize </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row15_col1\" class=\"data row15 col1\" >False</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row16\" class=\"row_heading level0 row16\" >16</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row16_col0\" class=\"data row16 col0\" >Normalize Method </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row16_col1\" class=\"data row16 col1\" >None</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row17\" class=\"row_heading level0 row17\" >17</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row17_col0\" class=\"data row17 col0\" >Transformation </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row17_col1\" class=\"data row17 col1\" >False</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row18\" class=\"row_heading level0 row18\" >18</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row18_col0\" class=\"data row18 col0\" >Transformation Method </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row18_col1\" class=\"data row18 col1\" >None</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row19\" class=\"row_heading level0 row19\" >19</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row19_col0\" class=\"data row19 col0\" >PCA </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row19_col1\" class=\"data row19 col1\" >False</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row20\" class=\"row_heading level0 row20\" >20</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row20_col0\" class=\"data row20 col0\" >PCA Method </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row20_col1\" class=\"data row20 col1\" >None</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row21\" class=\"row_heading level0 row21\" >21</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row21_col0\" class=\"data row21 col0\" >PCA Components </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row21_col1\" class=\"data row21 col1\" >None</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row22\" class=\"row_heading level0 row22\" >22</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row22_col0\" class=\"data row22 col0\" >Ignore Low Variance </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row22_col1\" class=\"data row22 col1\" >False</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row23\" class=\"row_heading level0 row23\" >23</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row23_col0\" class=\"data row23 col0\" >Combine Rare Levels </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row23_col1\" class=\"data row23 col1\" >False</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row24\" class=\"row_heading level0 row24\" >24</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row24_col0\" class=\"data row24 col0\" >Rare Level Threshold </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row24_col1\" class=\"data row24 col1\" >None</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row25\" class=\"row_heading level0 row25\" >25</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row25_col0\" class=\"data row25 col0\" >Numeric Binning </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row25_col1\" class=\"data row25 col1\" >False</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row26\" class=\"row_heading level0 row26\" >26</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row26_col0\" class=\"data row26 col0\" >Remove Outliers </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row26_col1\" class=\"data row26 col1\" >False</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row27\" class=\"row_heading level0 row27\" >27</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row27_col0\" class=\"data row27 col0\" >Outliers Threshold </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row27_col1\" class=\"data row27 col1\" >None</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row28\" class=\"row_heading level0 row28\" >28</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row28_col0\" class=\"data row28 col0\" >Remove Multicollinearity </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row28_col1\" class=\"data row28 col1\" >False</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row29\" class=\"row_heading level0 row29\" >29</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row29_col0\" class=\"data row29 col0\" >Multicollinearity Threshold </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row29_col1\" class=\"data row29 col1\" >None</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row30\" class=\"row_heading level0 row30\" >30</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row30_col0\" class=\"data row30 col0\" >Clustering </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row30_col1\" class=\"data row30 col1\" >False</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row31\" class=\"row_heading level0 row31\" >31</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row31_col0\" class=\"data row31 col0\" >Clustering Iteration </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row31_col1\" class=\"data row31 col1\" >None</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row32\" class=\"row_heading level0 row32\" >32</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row32_col0\" class=\"data row32 col0\" >Polynomial Features </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row32_col1\" class=\"data row32 col1\" >False</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row33\" class=\"row_heading level0 row33\" >33</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row33_col0\" class=\"data row33 col0\" >Polynomial Degree </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row33_col1\" class=\"data row33 col1\" >None</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row34\" class=\"row_heading level0 row34\" >34</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row34_col0\" class=\"data row34 col0\" >Trignometry Features </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row34_col1\" class=\"data row34 col1\" >False</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row35\" class=\"row_heading level0 row35\" >35</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row35_col0\" class=\"data row35 col0\" >Polynomial Threshold </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row35_col1\" class=\"data row35 col1\" >None</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row36\" class=\"row_heading level0 row36\" >36</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row36_col0\" class=\"data row36 col0\" >Group Features </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row36_col1\" class=\"data row36 col1\" >False</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row37\" class=\"row_heading level0 row37\" >37</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row37_col0\" class=\"data row37 col0\" >Feature Selection </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row37_col1\" class=\"data row37 col1\" >False</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row38\" class=\"row_heading level0 row38\" >38</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row38_col0\" class=\"data row38 col0\" >Features Selection Threshold </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row38_col1\" class=\"data row38 col1\" >None</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row39\" class=\"row_heading level0 row39\" >39</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row39_col0\" class=\"data row39 col0\" >Feature Interaction </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row39_col1\" class=\"data row39 col1\" >False</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row40\" class=\"row_heading level0 row40\" >40</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row40_col0\" class=\"data row40 col0\" >Feature Ratio </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row40_col1\" class=\"data row40 col1\" >False</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7level0_row41\" class=\"row_heading level0 row41\" >41</th>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row41_col0\" class=\"data row41 col0\" >Interaction Threshold </td>\n",
       "                        <td id=\"T_2714a294_5d86_11ea_a692_84fdd13f47d7row41_col1\" class=\"data row41 col1\" >None</td>\n",
       "            </tr>\n",
       "    </tbody></table>"
      ],
      "text/plain": [
       "<pandas.io.formats.style.Styler at 0x27b90f14148>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "exp_mclf101 = setup(data = data, target = 'species', session_id=123) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "8Mz7JeKqfuNJ"
   },
   "source": [
    "Once the setup has been succesfully executed it prints the information grid which contains several important pieces of information. Most of the information is related to the pre-processing pipeline which is constructed when `setup()` is executed. The majority of these features are out of scope for the purposes of this tutorial however a few important things to note at this stage include:\n",
    "\n",
    "- **session_id :**  A pseduo-random number distributed as a seed in all functions for later reproducibility. If no `session_id` is passed, a random number is automatically generated that is distributed to all functions. In this experiment, the `session_id` is set as `123` for later reproducibility.<br/>\n",
    "<br/>\n",
    "- **Target Type :**  Binary or Multiclass. The Target type is automatically detected and shown. There is no difference in how the experiment is performed for Binary or Multiclass problems. All functionalities are identical.<br/>\n",
    "<br/>\n",
    "- **Label Encoded :**  When the Target variable is of type string (i.e. 'Yes' or 'No') instead of 1 or 0, it automatically encodes the label into 1 and 0 and displays the mapping (0 : No, 1 : Yes) for reference. In this experiment label encoding is applied as follows: Iris-setosa: 0, Iris-versicolor: 1, Iris-virginica: 2. <br/>\n",
    "<br/>\n",
    "- **Original Data :**  Displays the original shape of the dataset. In this experiment (135, 5) means 135 samples and 5 features including the target column. <br/>\n",
    "<br/>\n",
    "- **Missing Values :**  When there are missing values in the original data this will show as True. For this experiment there are no missing values in the dataset.<br/>\n",
    "<br/>\n",
    "- **Numeric Features :**  The number of features inferred as numeric. In this dataset, 4 out of 5 features are inferred as numeric. <br/>\n",
    "<br/>\n",
    "- **Categorical Features :**  The number of features inferred as categorical. In this dataset, there are no categorical features. <br/>\n",
    "<br/>\n",
    "- **Transformed Train Set :**  Displays the shape of the transformed training set. Notice that the original shape of (135, 5) is transformed into (94, 4) for the transformed train set. <br/>\n",
    "<br/>\n",
    "- **Transformed Test Set :**  Displays the shape of the transformed test/hold-out set. There are 41 samples in test/hold-out set. This split is based on the default value of 70/30 that can be changed using the `train_size` parameter in setup. <br/>\n",
    "\n",
    "Notice how a few tasks that are imperative to perform modeling are automatically handled such as missing value imputation, categorical encoding etc. Most of the parameters in `setup()` are optional and used for customizing the pre-processing pipeline. These parameters are out of scope for this tutorial but as you progress to the intermediate and expert levels, we will cover them in much greater detail."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "i9ZvVSDYfuNL"
   },
   "source": [
    "# 7.0 Comparing All Models"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Kr65WJW2fuNM"
   },
   "source": [
    "Comparing all models to evaluate performance is the recommended starting point for modeling once the setup is completed (unless you exactly know what kind of model you need, which is often not the case). This function trains all models in the model library and scores them using stratified cross validation for metric evaluation. The output prints a score grid that shows average Accuracy, Recall, Precision, F1 and Kappa accross the folds (10 by default) of all the available models in the model library."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 355
    },
    "colab_type": "code",
    "id": "1wcMisYyfuNN",
    "outputId": "d3e16fbb-c33b-4bda-df3f-de2507f821c8",
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style  type=\"text/css\" >\n",
       "    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7 th {\n",
       "          text-align: left;\n",
       "    }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row0_col0 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row0_col1 {\n",
       "            background-color:  yellow;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row0_col2 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row0_col3 {\n",
       "            background-color:  yellow;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row0_col4 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row0_col5 {\n",
       "            background-color:  yellow;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row0_col6 {\n",
       "            background-color:  yellow;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row1_col0 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row1_col1 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row1_col2 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row1_col3 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row1_col4 {\n",
       "            background-color:  yellow;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row1_col5 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row1_col6 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row2_col0 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row2_col1 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row2_col2 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row2_col3 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row2_col4 {\n",
       "            background-color:  yellow;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row2_col5 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row2_col6 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row3_col0 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row3_col1 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row3_col2 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row3_col3 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row3_col4 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row3_col5 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row3_col6 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row4_col0 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row4_col1 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row4_col2 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row4_col3 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row4_col4 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row4_col5 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row4_col6 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row5_col0 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row5_col1 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row5_col2 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row5_col3 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row5_col4 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row5_col5 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row5_col6 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row6_col0 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row6_col1 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row6_col2 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row6_col3 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row6_col4 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row6_col5 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row6_col6 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row7_col0 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row7_col1 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row7_col2 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row7_col3 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row7_col4 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row7_col5 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row7_col6 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row8_col0 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row8_col1 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row8_col2 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row8_col3 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row8_col4 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row8_col5 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row8_col6 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row9_col0 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row9_col1 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row9_col2 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row9_col3 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row9_col4 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row9_col5 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row9_col6 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row10_col0 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row10_col1 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row10_col2 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row10_col3 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row10_col4 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row10_col5 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row10_col6 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row11_col0 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row11_col1 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row11_col2 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row11_col3 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row11_col4 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row11_col5 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row11_col6 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row12_col0 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row12_col1 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row12_col2 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row12_col3 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row12_col4 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row12_col5 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row12_col6 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row13_col0 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row13_col1 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row13_col2 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row13_col3 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row13_col4 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row13_col5 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row13_col6 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row14_col0 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row14_col1 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row14_col2 {\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row14_col3 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row14_col4 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row14_col5 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }    #T_4567c39e_5d86_11ea_bace_84fdd13f47d7row14_col6 {\n",
       "            : ;\n",
       "            text-align:  left;\n",
       "        }</style><table id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7\" ><thead>    <tr>        <th class=\"blank level0\" ></th>        <th class=\"col_heading level0 col0\" >Model</th>        <th class=\"col_heading level0 col1\" >Accuracy</th>        <th class=\"col_heading level0 col2\" >AUC</th>        <th class=\"col_heading level0 col3\" >Recall</th>        <th class=\"col_heading level0 col4\" >Prec.</th>        <th class=\"col_heading level0 col5\" >F1</th>        <th class=\"col_heading level0 col6\" >Kappa</th>    </tr></thead><tbody>\n",
       "                <tr>\n",
       "                        <th id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7level0_row0\" class=\"row_heading level0 row0\" >0</th>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row0_col0\" class=\"data row0 col0\" >Naive Bayes</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row0_col1\" class=\"data row0 col1\" >0.9567</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row0_col2\" class=\"data row0 col2\" >0</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row0_col3\" class=\"data row0 col3\" >0.9556</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row0_col4\" class=\"data row0 col4\" >0.9619</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row0_col5\" class=\"data row0 col5\" >0.9561</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row0_col6\" class=\"data row0 col6\" >0.9348</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7level0_row1\" class=\"row_heading level0 row1\" >1</th>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row1_col0\" class=\"data row1 col0\" >K Neighbors Classifier</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row1_col1\" class=\"data row1 col1\" >0.9467</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row1_col2\" class=\"data row1 col2\" >0</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row1_col3\" class=\"data row1 col3\" >0.9444</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row1_col4\" class=\"data row1 col4\" >0.9633</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row1_col5\" class=\"data row1 col5\" >0.943</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row1_col6\" class=\"data row1 col6\" >0.9197</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7level0_row2\" class=\"row_heading level0 row2\" >2</th>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row2_col0\" class=\"data row2 col0\" >Extreme Gradient Boosting</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row2_col1\" class=\"data row2 col1\" >0.9467</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row2_col2\" class=\"data row2 col2\" >0</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row2_col3\" class=\"data row2 col3\" >0.9444</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row2_col4\" class=\"data row2 col4\" >0.9633</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row2_col5\" class=\"data row2 col5\" >0.943</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row2_col6\" class=\"data row2 col6\" >0.9197</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7level0_row3\" class=\"row_heading level0 row3\" >3</th>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row3_col0\" class=\"data row3 col0\" >Light Gradient Boosting Machine</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row3_col1\" class=\"data row3 col1\" >0.9467</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row3_col2\" class=\"data row3 col2\" >0</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row3_col3\" class=\"data row3 col3\" >0.9444</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row3_col4\" class=\"data row3 col4\" >0.96</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row3_col5\" class=\"data row3 col5\" >0.9451</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row3_col6\" class=\"data row3 col6\" >0.9197</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7level0_row4\" class=\"row_heading level0 row4\" >4</th>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row4_col0\" class=\"data row4 col0\" >Random Forest Classifier</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row4_col1\" class=\"data row4 col1\" >0.9456</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row4_col2\" class=\"data row4 col2\" >0</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row4_col3\" class=\"data row4 col3\" >0.9444</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row4_col4\" class=\"data row4 col4\" >0.9536</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row4_col5\" class=\"data row4 col5\" >0.9446</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row4_col6\" class=\"data row4 col6\" >0.9182</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7level0_row5\" class=\"row_heading level0 row5\" >5</th>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row5_col0\" class=\"data row5 col0\" >Quadratic Discriminant Analysis</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row5_col1\" class=\"data row5 col1\" >0.9456</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row5_col2\" class=\"data row5 col2\" >0</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row5_col3\" class=\"data row5 col3\" >0.9444</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row5_col4\" class=\"data row5 col4\" >0.9536</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row5_col5\" class=\"data row5 col5\" >0.9446</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row5_col6\" class=\"data row5 col6\" >0.9182</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7level0_row6\" class=\"row_heading level0 row6\" >6</th>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row6_col0\" class=\"data row6 col0\" >Gradient Boosting Classifier</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row6_col1\" class=\"data row6 col1\" >0.9356</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row6_col2\" class=\"data row6 col2\" >0</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row6_col3\" class=\"data row6 col3\" >0.9333</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row6_col4\" class=\"data row6 col4\" >0.9461</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row6_col5\" class=\"data row6 col5\" >0.9343</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row6_col6\" class=\"data row6 col6\" >0.903</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7level0_row7\" class=\"row_heading level0 row7\" >7</th>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row7_col0\" class=\"data row7 col0\" >Extra Trees Classifier</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row7_col1\" class=\"data row7 col1\" >0.9356</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row7_col2\" class=\"data row7 col2\" >0</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row7_col3\" class=\"data row7 col3\" >0.9333</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row7_col4\" class=\"data row7 col4\" >0.9433</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row7_col5\" class=\"data row7 col5\" >0.9337</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row7_col6\" class=\"data row7 col6\" >0.903</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7level0_row8\" class=\"row_heading level0 row8\" >8</th>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row8_col0\" class=\"data row8 col0\" >CatBoost Classifier</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row8_col1\" class=\"data row8 col1\" >0.9356</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row8_col2\" class=\"data row8 col2\" >0</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row8_col3\" class=\"data row8 col3\" >0.9333</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row8_col4\" class=\"data row8 col4\" >0.9433</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row8_col5\" class=\"data row8 col5\" >0.9337</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row8_col6\" class=\"data row8 col6\" >0.903</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7level0_row9\" class=\"row_heading level0 row9\" >9</th>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row9_col0\" class=\"data row9 col0\" >Logistic Regression</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row9_col1\" class=\"data row9 col1\" >0.9244</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row9_col2\" class=\"data row9 col2\" >0</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row9_col3\" class=\"data row9 col3\" >0.9222</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row9_col4\" class=\"data row9 col4\" >0.9345</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row9_col5\" class=\"data row9 col5\" >0.9221</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row9_col6\" class=\"data row9 col6\" >0.8861</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7level0_row10\" class=\"row_heading level0 row10\" >10</th>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row10_col0\" class=\"data row10 col0\" >Ada Boost Classifier</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row10_col1\" class=\"data row10 col1\" >0.9244</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row10_col2\" class=\"data row10 col2\" >0</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row10_col3\" class=\"data row10 col3\" >0.9222</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row10_col4\" class=\"data row10 col4\" >0.935</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row10_col5\" class=\"data row10 col5\" >0.9223</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row10_col6\" class=\"data row10 col6\" >0.8864</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7level0_row11\" class=\"row_heading level0 row11\" >11</th>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row11_col0\" class=\"data row11 col0\" >Decision Tree Classifier</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row11_col1\" class=\"data row11 col1\" >0.9233</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row11_col2\" class=\"data row11 col2\" >0</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row11_col3\" class=\"data row11 col3\" >0.9222</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row11_col4\" class=\"data row11 col4\" >0.9342</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row11_col5\" class=\"data row11 col5\" >0.9211</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row11_col6\" class=\"data row11 col6\" >0.8848</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7level0_row12\" class=\"row_heading level0 row12\" >12</th>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row12_col0\" class=\"data row12 col0\" >Linear Discriminant Analysis</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row12_col1\" class=\"data row12 col1\" >0.8611</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row12_col2\" class=\"data row12 col2\" >0</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row12_col3\" class=\"data row12 col3\" >0.8667</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row12_col4\" class=\"data row12 col4\" >0.852</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row12_col5\" class=\"data row12 col5\" >0.8482</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row12_col6\" class=\"data row12 col6\" >0.7944</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7level0_row13\" class=\"row_heading level0 row13\" >13</th>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row13_col0\" class=\"data row13 col0\" >Ridge Classifier</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row13_col1\" class=\"data row13 col1\" >0.8289</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row13_col2\" class=\"data row13 col2\" >0</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row13_col3\" class=\"data row13 col3\" >0.8361</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row13_col4\" class=\"data row13 col4\" >0.8251</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row13_col5\" class=\"data row13 col5\" >0.8147</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row13_col6\" class=\"data row13 col6\" >0.7461</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7level0_row14\" class=\"row_heading level0 row14\" >14</th>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row14_col0\" class=\"data row14 col0\" >SVM - Linear Kernel</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row14_col1\" class=\"data row14 col1\" >0.7233</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row14_col2\" class=\"data row14 col2\" >0</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row14_col3\" class=\"data row14 col3\" >0.7222</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row14_col4\" class=\"data row14 col4\" >0.652</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row14_col5\" class=\"data row14 col5\" >0.6502</td>\n",
       "                        <td id=\"T_4567c39e_5d86_11ea_bace_84fdd13f47d7row14_col6\" class=\"data row14 col6\" >0.5884</td>\n",
       "            </tr>\n",
       "    </tbody></table>"
      ],
      "text/plain": [
       "<pandas.io.formats.style.Styler at 0x27b918e3448>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "compare_models()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "JxcCbKtffuNV"
   },
   "source": [
    "Two simple words of code ***(not even a line)*** have created over 15 models using 10 fold stratified cross validation and evaluated the 5 most commonly used classification metrics (Accuracy, Recall, Precision, F1, Kappa). The score grid printed above highlights the highest performing metric for comparison purposes only. The grid by default is sorted using 'Accuracy' (highest to lowest) which can be changed by passing the `sort` parameter. For example `compare_models(sort = 'Recall')` will sort the grid by Recall instead of Accuracy. If you want to change the fold parameter from the default value of `10` to a different value then you can use the `fold` parameter. For example `compare_models(fold = 5)` will compare all models on 5 fold cross validation. Reducing the number of folds will improve the training time.\n",
    "\n",
    "**Note:** The `AUC` metric is not available for Multiclass classification however the column will still be shown with `zero` values to maintain consistency between the Binary Classification and Multiclass Classification display grids. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "qH7AeJqjfuNX"
   },
   "source": [
    "# 8.0 Create a Model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "UM0qn2f_fuNY"
   },
   "source": [
    "While `compare_models()` is a powerful function and often a starting point in any experiment, it does not return any trained models. PyCaret's recommended experiment workflow is to use `compare_models()` right after setup to evaluate top performing models and finalize a few candidates for continued experimentation. As such, the function that actually allows to you create a model is unimaginatively called `create_model()`. This function creates a model and scores it using stratified cross validation. Similar to `compare_models()`, the output prints a score grid that shows Accuracy, Recall, Precision, F1 and Kappa by fold. \n",
    "\n",
    "For the remaining part of this tutorial, we will work with the below models as our candidate models. The selections are for illustration purposes only and do not necessarily mean they are the top performing or ideal for this type of data.\n",
    "\n",
    "- Decision Tree Classifier ('dt')\n",
    "- K Neighbors Classifier ('knn')\n",
    "- Logistic Regression ('lr')\n",
    "\n",
    "There are 18 classifiers available in the model library of PyCaret. Please view the `create_model()` docstring for the list of all available models."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "yyApyoXbfuNZ"
   },
   "source": [
    "### 8.1 Decision Tree Classifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 421
    },
    "colab_type": "code",
    "id": "U6v4R3MJfuNb",
    "outputId": "da32db85-d927-48b1-b6d8-1744331ec306"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Accuracy</th>\n",
       "      <th>AUC</th>\n",
       "      <th>Recall</th>\n",
       "      <th>Prec.</th>\n",
       "      <th>F1</th>\n",
       "      <th>Kappa</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.9000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.9250</td>\n",
       "      <td>0.8971</td>\n",
       "      <td>0.8485</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.9167</td>\n",
       "      <td>0.8857</td>\n",
       "      <td>0.8333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.9167</td>\n",
       "      <td>0.8857</td>\n",
       "      <td>0.8333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.9167</td>\n",
       "      <td>0.8857</td>\n",
       "      <td>0.8333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0.6667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.6667</td>\n",
       "      <td>0.6667</td>\n",
       "      <td>0.6571</td>\n",
       "      <td>0.5000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mean</th>\n",
       "      <td>0.9233</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.9222</td>\n",
       "      <td>0.9342</td>\n",
       "      <td>0.9211</td>\n",
       "      <td>0.8848</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SD</th>\n",
       "      <td>0.0997</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.1000</td>\n",
       "      <td>0.0971</td>\n",
       "      <td>0.1025</td>\n",
       "      <td>0.1496</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Accuracy  AUC  Recall   Prec.      F1   Kappa\n",
       "0       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "1       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "2       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "3       0.9000  0.0  0.8889  0.9250  0.8971  0.8485\n",
       "4       0.8889  0.0  0.8889  0.9167  0.8857  0.8333\n",
       "5       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "6       0.8889  0.0  0.8889  0.9167  0.8857  0.8333\n",
       "7       0.8889  0.0  0.8889  0.9167  0.8857  0.8333\n",
       "8       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "9       0.6667  0.0  0.6667  0.6667  0.6571  0.5000\n",
       "Mean    0.9233  0.0  0.9222  0.9342  0.9211  0.8848\n",
       "SD      0.0997  0.0  0.1000  0.0971  0.1025  0.1496"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "dt = create_model('dt')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 272
    },
    "colab_type": "code",
    "id": "7jwPc7ZBfuNg",
    "outputId": "89c7ee4c-55ed-4764-fd03-0974c22f6b1f"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "OneVsRestClassifier(estimator=DecisionTreeClassifier(ccp_alpha=0.0,\n",
      "                                                     class_weight=None,\n",
      "                                                     criterion='gini',\n",
      "                                                     max_depth=None,\n",
      "                                                     max_features=None,\n",
      "                                                     max_leaf_nodes=None,\n",
      "                                                     min_impurity_decrease=0.0,\n",
      "                                                     min_impurity_split=None,\n",
      "                                                     min_samples_leaf=1,\n",
      "                                                     min_samples_split=2,\n",
      "                                                     min_weight_fraction_leaf=0.0,\n",
      "                                                     presort='deprecated',\n",
      "                                                     random_state=123,\n",
      "                                                     splitter='best'),\n",
      "                    n_jobs=None)\n"
     ]
    }
   ],
   "source": [
    "#trained model object is stored in the variable 'dt'. \n",
    "print(dt)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "PhHDTJYwfuNl"
   },
   "source": [
    "### 8.2 K Neighbors Classifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 421
    },
    "colab_type": "code",
    "id": "WYHQ1DxkfuNm",
    "outputId": "26077e3b-a77b-4682-a518-a125e1f6c85a"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Accuracy</th>\n",
       "      <th>AUC</th>\n",
       "      <th>Recall</th>\n",
       "      <th>Prec.</th>\n",
       "      <th>F1</th>\n",
       "      <th>Kappa</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.9000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.9250</td>\n",
       "      <td>0.8971</td>\n",
       "      <td>0.8485</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.9000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.9250</td>\n",
       "      <td>0.8971</td>\n",
       "      <td>0.8485</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.9167</td>\n",
       "      <td>0.8857</td>\n",
       "      <td>0.8333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0.7778</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.7778</td>\n",
       "      <td>0.8667</td>\n",
       "      <td>0.7500</td>\n",
       "      <td>0.6667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mean</th>\n",
       "      <td>0.9467</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.9444</td>\n",
       "      <td>0.9633</td>\n",
       "      <td>0.9430</td>\n",
       "      <td>0.9197</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SD</th>\n",
       "      <td>0.0730</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0745</td>\n",
       "      <td>0.0475</td>\n",
       "      <td>0.0801</td>\n",
       "      <td>0.1097</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Accuracy  AUC  Recall   Prec.      F1   Kappa\n",
       "0       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "1       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "2       0.9000  0.0  0.8889  0.9250  0.8971  0.8485\n",
       "3       0.9000  0.0  0.8889  0.9250  0.8971  0.8485\n",
       "4       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "5       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "6       0.8889  0.0  0.8889  0.9167  0.8857  0.8333\n",
       "7       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "8       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "9       0.7778  0.0  0.7778  0.8667  0.7500  0.6667\n",
       "Mean    0.9467  0.0  0.9444  0.9633  0.9430  0.9197\n",
       "SD      0.0730  0.0  0.0745  0.0475  0.0801  0.1097"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "knn = create_model('knn')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "8IA_BtchfuNt"
   },
   "source": [
    "### 8.3 Logistic Regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 421
    },
    "colab_type": "code",
    "id": "u3nAFk1MfuNv",
    "outputId": "a863ebc8-ead4-4edc-ce9d-d91653f4fbd6"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Accuracy</th>\n",
       "      <th>AUC</th>\n",
       "      <th>Recall</th>\n",
       "      <th>Prec.</th>\n",
       "      <th>F1</th>\n",
       "      <th>Kappa</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.9000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.9200</td>\n",
       "      <td>0.8956</td>\n",
       "      <td>0.8462</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.9000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.9250</td>\n",
       "      <td>0.8971</td>\n",
       "      <td>0.8485</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.9167</td>\n",
       "      <td>0.8857</td>\n",
       "      <td>0.8333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.6667</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.6667</td>\n",
       "      <td>0.6667</td>\n",
       "      <td>0.6571</td>\n",
       "      <td>0.5000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.9167</td>\n",
       "      <td>0.8857</td>\n",
       "      <td>0.8333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mean</th>\n",
       "      <td>0.9244</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.9222</td>\n",
       "      <td>0.9345</td>\n",
       "      <td>0.9221</td>\n",
       "      <td>0.8861</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SD</th>\n",
       "      <td>0.0994</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.1000</td>\n",
       "      <td>0.0970</td>\n",
       "      <td>0.1022</td>\n",
       "      <td>0.1492</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Accuracy  AUC  Recall   Prec.      F1   Kappa\n",
       "0       0.9000  0.0  0.8889  0.9200  0.8956  0.8462\n",
       "1       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "2       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "3       0.9000  0.0  0.8889  0.9250  0.8971  0.8485\n",
       "4       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "5       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "6       0.8889  0.0  0.8889  0.9167  0.8857  0.8333\n",
       "7       0.6667  0.0  0.6667  0.6667  0.6571  0.5000\n",
       "8       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "9       0.8889  0.0  0.8889  0.9167  0.8857  0.8333\n",
       "Mean    0.9244  0.0  0.9222  0.9345  0.9221  0.8861\n",
       "SD      0.0994  0.0  0.1000  0.0970  0.1022  0.1492"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "lr = create_model('lr')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "HRtpGzhvfuN1"
   },
   "source": [
    "Notice that the Mean score of all models matches with the score printed in `compare_models()`. This is because the metrics printed in the `compare_models()` score grid are the average scores across all CV folds. Similar to `compare_models()`, if you want to change the fold parameter from the default value of 10 to a different value then you can use the `fold` parameter. For Example: `create_model('dt', fold = 5)` will create a Decision Tree Classifier using 5 fold stratified CV."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "jzY5pn-OfuN4"
   },
   "source": [
    "# 9.0 Tune a Model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "FShSLa10fuN5"
   },
   "source": [
    "When a model is created using the `create_model()` function it uses the default hyperparameters. In order to tune hyperparameters, the `tune_model()` function is used. This function automatically tunes the hyperparameters of a model on a pre-defined search space and scores it using stratified cross validation. The output prints a score grid that shows Accuracy, Recall, Precision, F1 and Kappa by fold. <br/>\n",
    "<br/>\n",
    "**Note:** `tune_model()` does not take a trained model object as an input. It instead requires a model name to be passed as an abbreviated string similar to how it is passed in `create_model()`. All other functions in `pycaret.classification` require a trained model object as an argument."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "WVgKXyjdfuN7"
   },
   "source": [
    "### 9.1 Decision Tree Classifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 421
    },
    "colab_type": "code",
    "id": "sQqeuiqLfuN9",
    "outputId": "2ae99738-689c-4506-da89-2a5710b2b40b"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Accuracy</th>\n",
       "      <th>AUC</th>\n",
       "      <th>Recall</th>\n",
       "      <th>Prec.</th>\n",
       "      <th>F1</th>\n",
       "      <th>Kappa</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.9167</td>\n",
       "      <td>0.8857</td>\n",
       "      <td>0.8333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.9167</td>\n",
       "      <td>0.8857</td>\n",
       "      <td>0.8333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.7778</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.7778</td>\n",
       "      <td>0.7778</td>\n",
       "      <td>0.7778</td>\n",
       "      <td>0.6667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0.7778</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.7778</td>\n",
       "      <td>0.7778</td>\n",
       "      <td>0.7778</td>\n",
       "      <td>0.6667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mean</th>\n",
       "      <td>0.9333</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.9333</td>\n",
       "      <td>0.9389</td>\n",
       "      <td>0.9327</td>\n",
       "      <td>0.9000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SD</th>\n",
       "      <td>0.0889</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0889</td>\n",
       "      <td>0.0868</td>\n",
       "      <td>0.0892</td>\n",
       "      <td>0.1333</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Accuracy  AUC  Recall   Prec.      F1   Kappa\n",
       "0       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "1       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "2       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "3       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "4       0.8889  0.0  0.8889  0.9167  0.8857  0.8333\n",
       "5       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "6       0.8889  0.0  0.8889  0.9167  0.8857  0.8333\n",
       "7       0.7778  0.0  0.7778  0.7778  0.7778  0.6667\n",
       "8       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "9       0.7778  0.0  0.7778  0.7778  0.7778  0.6667\n",
       "Mean    0.9333  0.0  0.9333  0.9389  0.9327  0.9000\n",
       "SD      0.0889  0.0  0.0889  0.0868  0.0892  0.1333"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "tuned_dt = tune_model('dt')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 272
    },
    "colab_type": "code",
    "id": "Wgxxg07CfuOD",
    "outputId": "78e965df-7c6a-4548-b2ec-57a051df89bd"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "OneVsRestClassifier(estimator=DecisionTreeClassifier(ccp_alpha=0.0,\n",
      "                                                     class_weight=None,\n",
      "                                                     criterion='entropy',\n",
      "                                                     max_depth=2,\n",
      "                                                     max_features=3,\n",
      "                                                     max_leaf_nodes=None,\n",
      "                                                     min_impurity_decrease=0.0,\n",
      "                                                     min_impurity_split=None,\n",
      "                                                     min_samples_leaf=4,\n",
      "                                                     min_samples_split=2,\n",
      "                                                     min_weight_fraction_leaf=0.0,\n",
      "                                                     presort='deprecated',\n",
      "                                                     random_state=123,\n",
      "                                                     splitter='best'),\n",
      "                    n_jobs=None)\n"
     ]
    }
   ],
   "source": [
    "#tuned model object is stored in the variable 'tuned_dt'. \n",
    "print(tuned_dt)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "fe9QKCZ8fuOU"
   },
   "source": [
    "### 9.2 K Neighbors Classifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 421
    },
    "colab_type": "code",
    "id": "KnjZA6PVfuOW",
    "outputId": "556a5e63-9861-4257-f969-3b649783fbb1"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Accuracy</th>\n",
       "      <th>AUC</th>\n",
       "      <th>Recall</th>\n",
       "      <th>Prec.</th>\n",
       "      <th>F1</th>\n",
       "      <th>Kappa</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.9000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.9250</td>\n",
       "      <td>0.8971</td>\n",
       "      <td>0.8485</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.9000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.9250</td>\n",
       "      <td>0.8971</td>\n",
       "      <td>0.8485</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.9167</td>\n",
       "      <td>0.8857</td>\n",
       "      <td>0.8333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mean</th>\n",
       "      <td>0.9689</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.9667</td>\n",
       "      <td>0.9767</td>\n",
       "      <td>0.9680</td>\n",
       "      <td>0.9530</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SD</th>\n",
       "      <td>0.0476</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0509</td>\n",
       "      <td>0.0357</td>\n",
       "      <td>0.0490</td>\n",
       "      <td>0.0719</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Accuracy  AUC  Recall   Prec.      F1   Kappa\n",
       "0       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "1       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "2       0.9000  0.0  0.8889  0.9250  0.8971  0.8485\n",
       "3       0.9000  0.0  0.8889  0.9250  0.8971  0.8485\n",
       "4       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "5       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "6       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "7       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "8       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "9       0.8889  0.0  0.8889  0.9167  0.8857  0.8333\n",
       "Mean    0.9689  0.0  0.9667  0.9767  0.9680  0.9530\n",
       "SD      0.0476  0.0  0.0509  0.0357  0.0490  0.0719"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "tuned_knn = tune_model('knn')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "oF2hDwoifuOd"
   },
   "source": [
    "### 9.3 Logistic Regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 421
    },
    "colab_type": "code",
    "id": "3wyDGn_NfuOf",
    "outputId": "de306431-f9f6-4a25-cefb-03201aa77b96"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Accuracy</th>\n",
       "      <th>AUC</th>\n",
       "      <th>Recall</th>\n",
       "      <th>Prec.</th>\n",
       "      <th>F1</th>\n",
       "      <th>Kappa</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.9000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.9250</td>\n",
       "      <td>0.8971</td>\n",
       "      <td>0.8485</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.9167</td>\n",
       "      <td>0.8857</td>\n",
       "      <td>0.8333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.8889</td>\n",
       "      <td>0.9167</td>\n",
       "      <td>0.8857</td>\n",
       "      <td>0.8333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>1.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0.7778</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.7778</td>\n",
       "      <td>0.7778</td>\n",
       "      <td>0.7778</td>\n",
       "      <td>0.6667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mean</th>\n",
       "      <td>0.9456</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.9444</td>\n",
       "      <td>0.9536</td>\n",
       "      <td>0.9446</td>\n",
       "      <td>0.9182</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SD</th>\n",
       "      <td>0.0738</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0745</td>\n",
       "      <td>0.0688</td>\n",
       "      <td>0.0745</td>\n",
       "      <td>0.1108</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Accuracy  AUC  Recall   Prec.      F1   Kappa\n",
       "0       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "1       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "2       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "3       0.9000  0.0  0.8889  0.9250  0.8971  0.8485\n",
       "4       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "5       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "6       0.8889  0.0  0.8889  0.9167  0.8857  0.8333\n",
       "7       0.8889  0.0  0.8889  0.9167  0.8857  0.8333\n",
       "8       1.0000  0.0  1.0000  1.0000  1.0000  1.0000\n",
       "9       0.7778  0.0  0.7778  0.7778  0.7778  0.6667\n",
       "Mean    0.9456  0.0  0.9444  0.9536  0.9446  0.9182\n",
       "SD      0.0738  0.0  0.0745  0.0688  0.0745  0.1108"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "tuned_lr = tune_model('lr')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "BVdIeXY5fuOi"
   },
   "source": [
    "The `tune_model()` function is a random grid search of hyperparameters over a pre-defined search space. By default, it is set to optimize `Accuracy` but this can be changed using the `optimize` parameter. For example: `tune_model('dt', optimize = 'Recall')` will search for the hyperparameters of a Decision Tree Classifier that result in the highest `Recall`. For the purposes of this example, we have used the default metric `Accuracy` for the sake of simplicity only. The methodology behind selecting the right metric to evaluate a classifier is beyond the scope of this tutorial but if you would like to learn more about it, you can __[click here](https://medium.com/@george.drakos62/how-to-select-the-right-evaluation-metric-for-machine-learning-models-part-3-classification-3eac420ec991)__ to read an article on how to choose the right evaluation metric.\n",
    "\n",
    "Notice how the results after tuning have been improved:\n",
    "\n",
    "- Decision Tree Classifier (Before: **`0.9233`** , After: **`0.9333`**)\n",
    "- K Neighbors Classifier (Before: **`0.9467`** , After: **`0.9689`**)\n",
    "- Random Forest Classifier (Before: **`0.9244`** , After: **`0.9456`**)\n",
    "\n",
    "Metrics alone are not the only criteria you should consider when finalizing the best model for production. Other factors to consider include training time, standard deviation of kfolds etc. As you progress through the tutorial series we will discuss those factors in detail at the intermediate and expert levels. For now, let's move forward considering the Tuned K Neighbors Classifier as our best model for the remainder of this tutorial."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "3zct2zSYfuOl"
   },
   "source": [
    "# 10.0 Plot a Model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "a3_m4yEdfuOm"
   },
   "source": [
    "Before model finalization, the `plot_model()` function can be used to analyze the performance across different aspects such as AUC, confusion_matrix, decision boundary etc. This function takes a trained model object and returns a plot based on the test / hold-out set. \n",
    "\n",
    "There are 15 different plots available, please see the `plot_model()` docstring for the list of available plots."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "AegNi_BXfuOn"
   },
   "source": [
    "### 10.1 Confusion Matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 374
    },
    "colab_type": "code",
    "id": "kI0tERkNfuOo",
    "outputId": "d13e1e50-aa8c-420e-ba85-3affca7b9500"
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeoAAAFkCAYAAADv13iSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deViU5eL/8c8Mu+KGKamVYi5kWmpfLdxStE4uoLZYrpGn3CI1lbRwN81QMbVcsk4nca3UtMzKrKMtbp2y5IjRcY0ENXcRGJi5f3/0c4qDhJkwD/B+XZfXBfcz89yfGUY+cz8z82AzxhgBAABLsns6AAAAyB9FDQCAhVHUAABYGEUNAICFUdQAAFgYRQ0AgIVR1PCoFStWKDIyUp06dVLnzp0VExOjo0ePXvX+0tPT1bRpU+3evTvPtkGDBumf//xnvtfdsWOHbrvtNnXt2tX9r0OHDho0aJBOnz591ZlefvllffLJJ+7vjx07pjFjxigiIkKRkZF66KGHcm2vX7++Tp06ddXzXU5sbKy++uorSdKCBQvUtm1bPfvss7nG/4rPPvtMffv2VdeuXdW5c2cNHz5cqampf2mfv895Nbp27apz5879pQyXjBkzRvXr19f27dtzjaekpCg0NFSTJ08ucB9jx45VYmLiZbddq58DSigDeMj06dNNVFSUOXr0qDHGGKfTadauXWtatWplUlNTr3q/EydONLGxsbnGUlNTTZMmTczZs2fzvd727dtN586dc43l5OSYwYMHm5kzZ151nj59+piNGzcaY4w5efKkadu2rVm7dq1xuVzGGGOSkpLMXXfdZb744gtjjDH16tUzJ0+evOr5ChIeHm527dp1zfa3fv1607FjR3Po0CFjjDEul8ssXLjQdOjQwWRlZV31fq91zr9i9OjRpm3btmbMmDG5xufNm2datGhhJk2aVOA+2rVrZ77//vvCiogSzNvTTxRQOqWlpWnlypX617/+pQoVKkiS7Ha7unXrpsTERC1atEgTJkxQeHi4unfvrm3btik1NVVdu3bV8OHDJUmffvqpFixYoOzsbPn7+2v06NFq0qSJevfurYcffljPPfecypQpI0l655131LlzZ5UvX1779+9XbGysHA6HjDF68MEH1bt378vmvHDhgk6dOqWmTZtKks6fP6+pU6cqOTlZ2dnZCgsL0zPPPCNvb2/NnTtXmzZtko+PjypVqqQXXnhBmzZtUmJiouLi4uTl5aUffvhBTZs2Vbdu3dxzhIaGau7cuSpfvnyuuS9evKiJEyfq8OHDOnPmjMqWLauZM2eqdu3a+vjjj7VgwQLZbDZ5eXnpmWeeUbNmzfId79u3r3r37q0PP/xQx44dU2xsrIYNG6YVK1aod+/euu+++/TNN99o5syZysjIkN1uV3R0tNq1a6c1a9bonXfeUUZGhgIDA5WQkJAr5+zZszVlyhTVrFlTkmSz2TRgwABVq1ZNDodDvr6+euWVV7RhwwZ5eXkpJCRE48aNU5UqVdS3b181btxY33zzjVJTUxUWFqYpU6ZoxIgR+eaU5L49991332Xv96pVq6p+/fratm2bgoKC/vT8dnveg42dOnXSO++8o8zMTPn7+0uSNm7cqI4dO8rlckmSdu/erRkzZsjhcOjEiRNq0aKFpk2bptmzZ+v48eMaNWqU4uLiNHPmTFWoUEEHDhxQz5499fHHH6t3796qWLGihg0bpvXr16tKlSp69NFHddddd+nJJ5/8E/+7UOJ4+pkCSqcPP/zQ3H///ZfdtnnzZhMREWGM+XUVMn36dGOMMWlpaaZRo0bmyJEj5uDBg6ZLly7m1KlTxhhjkpOTTcuWLU16erox5tdV7OrVq40xv67U27Zta5KSkowxxjz77LNm0aJFxhhjjh8/boYPH26cTqfZvn27adSokYmMjDSdOnUyd911l+nWrZtZtGiRcTgcxhhjxowZY5YsWWKM+XW1PWrUKPPqq6+ao0ePmqZNm7pXkK+//rrZtGmTO8ulFfXAgQPN0qVL//C+ubSi3rhxo5kyZYp7fNy4cWby5MnGGGPat29vvv32W2OMMZ9//rmZN2/eH47/PsPvV3aXxs+cOWPuvfde89NPP7nv6zZt2piff/7ZrF692jRr1sycP38+T9ZTp06ZevXqmYsXL+Z7e9555x3z8MMPu382c+fONf3793fPP3ToUON0Os358+dNq1atzLZt2/LNecml7//ofr90P17t/L83evRo89prr5mBAweaDRs2GGOM2bVrl3nqqafM3Llz3Svqp59+2mzfvt0YY8yFCxfMnXfeafbs2XPZ2/Pss8/muT3GGBMfH28ef/xxM2/ePNO/f3/jdDrzvW9ROrCihsfk5ORcdtzhcMhms7m/b9++vSQpODhYlStX1tmzZ/Xdd9/p+PHjioqKcl/OZrPpyJEjCg0NVa9evbR06VLdf//92rp1q6pVq6bQ0FBJ0j333KPRo0fr+++/V1hYmMaOHeteQd10001at26dJGn16tWaPXu2OnbsKB8fH0nSv/71L+3Zs0fvvPOOJCkzM9OdLTQ0VN27d1ebNm3Upk0bhYWF5bltNptN5grP2nvffffpxhtvVEJCgg4fPqydO3eqSZMmkqTOnTsrOjpad999t1q2bKknnnjiD8cLsnv3bp04cSLXys1ms+mHH36Q9Ovr5oGBgXmud+l+u7SivJytW7fq/vvvdx/d6NevnxYuXCiHwyFJateunex2uwIDA1WzZk2dPXv2ijJLV3a/X8v5u3btqnXr1qlTp05699131b1791yvO0+fPl1bt27VwoULdeDAAWVlZenixYuX3df//d//XXb8qaeeUq9evbRixQq99957l13do3ThEQCPaNy4sQ4fPqwTJ07k2bZjxw53IUmSn5+f++tLRedyuRQWFqZ169a5/7311luqW7eupF/L+MiRIzp06JDeeuutXIe227Vrp48++kgdO3ZUUlKSIiIilJaWlifHAw88oPDwcA0bNsz9pMLlcmnOnDnuOd9++22NHz9edrtdS5cu1QsvvKCKFStq2rRpiouLu+ztvtwb3VauXKk33ngj19jy5csVGxsrf39/RUREqEuXLu6Sf/rpp7V8+XI1bNhQa9ascd++/MYL4nQ6dfPNN+e6P1etWqVWrVpJkrvk/leFChVUq1Ytfffdd3m2DRs2TPv27ZPL5cr1xMvlcuV6knbpMLL0x09kfj+enZ0tSVd0v1+r+aVfnzR+9913Sk1N1a5du9S6detc2/v06aMtW7aodu3aevLJJ1W1atV895fffXr+/HmdOHFCNptNhw8fzjcLSg+KGh4RHBysvn37ul+LvGT16tX6+OOPC1wJhoWF6csvv9T+/fslSVu2bFFkZKR7hevt7a0ePXpoyZIl2rt3r+699173dUeOHKkPPvhAnTt31oQJExQYGKgjR45cdp5Ro0YpNTVVy5YtkyS1atVK//znP2WMkcPh0ODBg7V06VLt27dPXbp00c0336yBAwcqKipKe/bskSR5eXm5i+Hhhx/Wzp07tX79evcv8MTERM2dO1f16tXLNfcXX3yh7t2766GH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WMHBwflu37Vrl5xO51+e59ixY+rXr5969Oih9957T+vXr1fdunUVHR39l/cN4DecJQOwgDvvvFPx8fGSpPDwcN12221KSkrS8uXL9fnnn+vNN9+Uy+XSrbfeqgkTJsjPz0/vvvuuFixYoMDAQNWoUUNlypRxX3/JkiWqUqWKJk2apH//+9/y8fHRkCFD5HA4lJiYqLFjx+rll1+Wv7+/Jk6cqDNnzsjf31/jxo1TgwYNlJKSopiYGF28eFG33377ZTOvWLFCd911l8LDwyX9eoKUJ554QjfccINycnJyXXbp0qVat26dMjIy5OPjo1mzZql27dp68cUX9eWXX8put6tDhw6Kjo7Wtm3bNGPGDElShQoVNGvWLAUFBRXWXQ9YHitqwMOys7P10UcfqXHjxu6xNm3a6KOPPtKpU6f01ltvaeXKlVq3bp0qV66s119/XceOHdPMmTO1bNkyrVq1Sunp6Xn2e+mz9xs3btQbb7yhV155RZ06dVLDhg31/PPPq379+ho9erRiYmK0du1aTZkyxf051ylTpuj+++/XunXr1LRp08vmTkpK0q233pprzMvLS126dMl1prwLFy7ok08+UUJCgt5//321bdtWy5Yt088//6ytW7dq/fr1WrFihf773/8qKytL8+fP18SJE7VmzRq1aNFCe/fuvRZ3M1BssaIGPOD48ePq2rWrJMnhcOi2227TyJEj3dsvrWJ37Nihw4cPq0ePHpJ+LfUGDRro22+/VZMmTXTddddJkiIiIrR9+/Zcc+zatUs9evSQ3W5XlSpVtGHDhlzb09PTlZiYqGeffdY9dvHiRZ0+fVo7d+50/5GXyMhIjR07Ns9tsNlsV/QZ/sDAQM2aNUsbNmzQoUOH9Pnnn+uWW25RcHCw/Pz89Mgjj6hdu3YaNWqU/Pz81L59e0VHR6tDhw5q3769WrZsWeAcQElGUQMecOk16vz4+flJkpxOpzp27OguyvT0dDmdTm3btk2/PwXC5c717u3tnet83YcPH1a1atXc37tcLvn6+ubKkZaW5j6z1KX922w22e15D741bNhQiYmJucZcLpeGDh2qiRMnusdSU1PVt29f9enTR23atNF1112npKQkeXt76+2339bOnTu1detWPfLII0pISFBUVJTatWunzz77TDNmzND333+vwYMH53tfASUdh74BC7vzzju1adMmnTx5UsYYTZw4UW+++abuuOMO7d69W8eOHZPL5dIHH3yQ57rNmjXTBx98IGOMTp48qT59+sjhcMjLy0tOp1PlypVTrVq13EX95Zdfqnfv3pKkFi1aaP369ZKkjz/+WFlZWXn2//DDD2vLli3asmWLpF+Lff78+Tp58qR7pS9Je/bsUc2aNRUVFaVGjRrpk08+kdPp1N69e9WnTx81a9ZMo0eP1s0336yDBw/qoYceUnp6uqKiohQVFcWhb5R6rKgBCwsNDVV0dLQeffRRuVwu3XLLLRowYID8/Pw0duxYRUVFKSAgQHXq1Mlz3V69eun5559XZGSkpF//vGVgYKBat26tCRMm6MUXX9SMGTM0ceJEvfbaa/Lx8dHs2bNls9k0fvx4xcTEaNWqVWrYsKHKli2bZ/9VqlTR4sWLFRcXp5kzZ8rpdKpBgwZ65ZVXcl2uZcuWWrFihTp16iRjjJo1a6Yff/xRDRo0UOPGjdWlSxcFBASoadOmatOmjQICAjRmzBh5e3urTJkynIscpR6nEAUAwMI49A0AgIVR1AAAWBhFDQCAhVHUAABYGEUNAICFUdQAAFgYRQ0AgIX9P1xZKwSneI6tAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 576x396 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_model(tuned_knn, plot = 'confusion_matrix')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "WdQqEtO4fuOt"
   },
   "source": [
    "### 10.2 Classification Report"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 401
    },
    "colab_type": "code",
    "id": "wHKBMDaZfuOu",
    "outputId": "2a627204-ff7b-4a2b-f307-1d5707c159f5"
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAggAAAGACAYAAADI95pLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3dd3RU1d7G8WdSIQlFeihBigGlCEEERFB6DQSpUq4FBZGqoIB4CU2I4BVBqqKg6KVIt4AQAWlSBAJEIYhKFUIJEBJC2uz3D27mJR6qJhkz+X7WYi3mlH1+Jxsyz+x95hybMcYIAADgBm7OLgAAAPzzEBAAAIAFAQEAAFgQEAAAgAUBAQAAWBAQAACABQEhB1qwYIHatGmjli1bqlWrVnrttdf0xx9//OX24uPjFRQUpIiICMu6l156SfPmzbvlvjt27FDVqlXVtm1bx5/GjRvrpZde0sWLF/9yTdOmTVN4eLjjdXR0tIYNG6bg4GC1adNGHTt2TLe+QoUKiomJ+cvHu5kRI0Zo27ZtkqSZM2fqySef1PDhw9Mt/zs2bNigHj16qG3btmrVqpUGDRqk06dPS5KWLVum3r17/+1j3Cg6OlpdunSRJMXFxalLly5q1aqVvvzyS8fyv+KLL77Q559/Lun6v80PPvggQ+qVrvdrcHCw2rZtq5CQEDVr1kzt27fXgQMHMuwYt3PixAn1798/S44FZDiDHCUsLMw8++yz5o8//jDGGJOammqWL19uHn/8cXP69Om/3O6oUaPMiBEj0i07ffq0qV69url8+fIt99u+fbtp1apVumUpKSmmT58+5p133vnL9XTv3t2sXr3aGGPMhQsXzJNPPmmWL19u7Ha7McaYgwcPmtq1a5stW7YYY4wJDAw0Fy5c+MvHu5OGDRuaXbt2ZVh7q1atMi1atDBHjx41xhhjt9vNrFmzTOPGjU1iYqJZunSp6dWrV4Yd78927txpGjdunCFtDR061MyZMydD2vqzm/XrnDlzTKdOnTLleH92s3/fQHbh4eyAgqxz5swZLVy4UBs3blS+fPkkSW5ubgoJCVFkZKRmz56t0NBQNWzYUO3atdMPP/yg06dPq23btho0aJAkaf369Zo5c6aSk5OVK1cuDR06VNWrV1e3bt3UuXNnvfHGG/Lx8ZEkLVmyRK1atVLevHn166+/asSIEUpKSpIxRh06dFC3bt1uWmdcXJxiYmIUFBQkSbpy5YreeustHT58WMnJyapTp45ef/11eXh4aOrUqVq3bp08PT113333acKECVq3bp0iIyM1ceJEubu7KyoqSkFBQQoJCXEco2LFipo6dary5s2b7thXr17VqFGjdOzYMV26dEm+vr565513VLZsWa1du1YzZ86UzWaTu7u7Xn/9ddWsWfOWy3v06KFu3bppzZo1io6O1ogRIzRw4EAtWLBA3bp1U/PmzbVnzx698847SkhIkJubm/r166cGDRpo2bJlWrJkiRISEuTn56f58+enq3Py5MkaO3asSpcuLUmy2Wzq1auX/P39lZSUlG7biIgITZo0SUlJSTp37pwee+wxjR8/XikpKRo7dqz27NkjT09PlSxZUhMmTJC3t/dNl1+8eFHBwcFaunSp3njjDUVHR6tt27Z699131aFDB+3du1cpKSmaNGmSNm7cKHd3d1WvXl2hoaGKjY3VyJEjdeHCBZ07d04lSpTQe++9pz179mj9+vXaunWrcuXKpZiYGF28eFEjR47UL7/8ojFjxujSpUuy2Wx6/vnnFRISoh07dmjy5MkqVaqUfvnlF6WkpGj06NGqUaPGHf8PpKSk6PTp045//9L10Z21a9fKbrerRIkSCg0NVdGiRdWjRw899NBD2r17ty5evKi2bdtqwIABkqTw8HBNmzZNdrtdvr6+Gj58uKpWrar3339fEREROnv2rB544AEdOHBA0dHR6tmzpz766KM71gf8ozg7oSDrrFmzxjz11FM3Xffdd9+Z4OBgY4wxDRo0MGFhYcYYY86cOWOqVKlijh8/bn7//XfTunVrExMTY4wx5vDhw6Zu3bomPj7eGHP9U/vSpUuNMddHJp588klz8OBBY4wxw4cPN7NnzzbGGHP27FkzaNAgk5qaarZv326qVKli2rRpY1q2bGlq165tQkJCzOzZs01SUpIxxphhw4aZTz/91BhzfXRhyJAh5oMPPjB//PGHCQoKMomJicYYYz766COzbt06Ry1pIwi9e/c2n3322W1/NmmfNFevXm3Gjh3rWP7vf//bjBkzxhhjTKNGjczevXuNMcZs3rzZvP/++7ddfmMNDRo0MPv370+3/NKlS6Zp06bmxIkTjp91/fr1zalTp8zSpUtNzZo1zZUrVyy1xsTEmMDAQHP16tVbns+NIwivvPKK2b59uzHGmLi4OFOrVi1z4MABs2vXLtO8eXPHqMrEiRPN7t27b7n8xIkTplq1asaY9J+Mb1z+ySefmG7dupmEhASTmppqBg4caJYvX27mzZvn6H+73W5eeOEF89FHHxlj0o8gTJ061YwePdokJyebRo0amW+//dbxs6lXr57Zs2eP2b59u3nwwQfNzz//bIy53u/dunW7Zb+2bt3atG7d2tStW9c0bNjQjB071pw/f94YY8zy5cvNoEGDTHJysjHGmIULF5oXXnjB0U8vvviiSUpKMpcvXzbNmjUz69evN0eOHDGPPfaYOX78uDHGmG3btpm6deuaK1eumKlTp5pmzZo52mMEAdkZIwg5TEpKyk2XJyUlyWazOV43atRIklS0aFEVLFhQly9f1r59+3T27Fk9++yzju1sNpuOHz+uihUrqmvXrvrss8/01FNPadOmTfL391fFihUlSU2aNNHQoUO1f/9+1alTR2+++abc3K5fAhMQEKCVK1dKkpYuXarJkyerRYsW8vT0lCRt3LhRBw4c0JIlSyRJ165dc9RWsWJFtWvXTvXr11f9+vVVp04dy7nZbDaZu7yjePPmzVWqVCnNnz9fx44d086dO1W9enVJUqtWrdSvXz898cQTqlu3rl588cXbLr+TiIgInTt3Tn379k1Xa1RUlKTr8+d+fn6W/dJ+bna7/a6OExYWpk2bNmnWrFn67bfflJiYqKtXr6pixYpyd3dXx44d9fjjj6tZs2aqWrWqYmNjb7r85MmTdzzWtm3b1LZtW+XKlUuS9N577znW/fjjj5o7d66OHj2qX375RQ8//PAt2zl69KgSExPVtGlTSdf7umnTptq8ebNq1aql4sWL68EHH5QkPfTQQ1q+fPkt2/rkk09UoEAB/fTTT+rVq5dq1aqlggULSrp+HceBAwfUvn17Sdd/pgkJCY59O3fuLE9PT3l6eqp58+basmWLypYtq9q1a6tUqVKSpDp16qhAgQKKjIyUJFWrVk0eHvxqRfbHv+IcpFq1ajp27JjOnTunwoULp1u3Y8cOxxuhJHl7ezv+nvYGa7fbVadOnXS/9E+fPq0iRYpIuh4Cxo8fr6NHj2rx4sXpphAaNGigb7/9Vtu2bdMPP/yg6dOna9myZZYa27dvr3379mngwIFavHixPDw8ZLfbNWXKFJUrV06SFBsbK5vNJjc3N3322Wc6cOCAfvjhB40fP1716tXT66+/bjnviIgIde/ePd3yhQsXKiEhQc8995xj2X//+19H7cHBwcqfP7/jjfGVV15R+/bttXXrVi1btkwff/yxlixZcsvld5Kamqpy5crpiy++cCyLjo5WgQIF9OWXXzqmav4sX758uv/++7Vv3z499thj6dYNHDhQffr0Sbese/fuqlChgurVq6cWLVpo3759MsYob968Wrlypfbs2aPt27dr0KBB6tmzp7p163bT5U888cQdz+nPb4znz5+X3W7XJ598ov3796t9+/aqVauWUlJSbhvaUlNT0wVWSTLGOAJuWgCR7j4AVqpUScOHD9ewYcP04IMPqmTJkrLb7XrhhRfUtWtXSdeD8uXLl296PsYYubm5yW6337a2W/UbkN3wLYYcJG1e9dVXX1V0dLRj+dKlS7V27do7fvKtU6eOtm7dql9//VWS9P3336tNmzaOT/QeHh7q1KmTPv30U/3888+OT3+SNHjwYH3zzTdq1aqVQkND5efnp+PHj9/0OEOGDNHp06cdV7Y//vjjmjdvnowxSkpKUp8+ffTZZ5/p0KFDat26tcqVK6fevXvr2WefdVyd7u7u7viF3blzZ+3cuVOrVq1yvJFERkZq6tSpCgwMTHfsLVu2qF27durYsaPKlCmj9evXKzU1VSkpKWrYsKESEhL09NNPKzQ0VFFRUUpKSrrl8jtJC2y7du2SJB08eFDNmjVL1ze30q9fP7311ls6duyYpOtvqDNmzNChQ4dUtmxZx3axsbE6cOCAhgwZoqZNm+rMmTM6fvy47Ha7NmzYoGeffVbVq1dX//79Hdei3Gr53ahTp46++uorJSUlyW63a9SoUfr666+1ZcsWPfPMMwoJCVHBggW1bds2paamSkrfV2nKli0rDw8PrV27VtL14PTtt99aAtG9at26tapWraoJEyZIuv5va8mSJYqLi5MkTZkyJV3AXLVqlex2uy5fvqzVq1erYcOGqlOnjrZs2aITJ05IkuNanZuNiLi7uys5Oflv1Qw4CyMIOczgwYP1xRdfqE+fPkpKSlJSUpKqVKmihQsXqkSJErfdt3z58hozZoxeffVVGWPk4eGhmTNnytfX17FNp06d1KhRI/Xq1csxRSBJL7/8skaMGKFFixbJ3d1djRs3Vs2aNbVz507LcfLmzashQ4ZowoQJatWqlUaMGKG33npLwcHBSk5O1mOPPaYXXnhBnp6eatGihdq3by8fHx/lypVLb775piSpYcOGevfdd5WcnKx27dpp/vz5mjRpkmbPni03Nzflzp1bb731lurWrZvu2M8//7xGjhzpGAGoVq2aDh8+LA8PD73xxhsaMmSIPDw8ZLPZNH78eHl5ed1y+Z0UKFBAU6dO1cSJE5WYmChjjCZOnKiSJUve9Odyo+DgYBlj9OqrryolJUWJiYmqVKmSPvnkk3THzps3r3r16qV27drJx8dHRYsWVVBQkI4dO6aOHTtq06ZNat26tXx8fJQvXz6NHTtW/v7+N11+N7p06aJTp07pqaeekjFGjz76qHr06KESJUpo4sSJmjJlijw9PRUUFOQIiPXr11dYWFi6djw9PTVjxgyNGzdO77//vlJTU9W3b1/Vrl1bO3bsuKtabuXf//632rRpo82bN6tjx46Kjo5Wp06dZLPZ5O/vn66Wa9euqUOHDoqPj1fXrl0dU1ihoaHq16+fUlNTlStXLs2aNUt58uSxHKt8+fLy9vZWhw4d9MUXX1hGHoB/Mpu528lZAMhB0r6F0rx5c2eXAjgFUwwAAMCCEQQAAGDBCAIAAC5i37596tGjh2X5+vXr1b59e3Xu3FmLFy++q7a4SBEAABfw4YcfatWqVcqdO3e65cnJyZowYYKWLFmi3Llz6+mnn1aDBg0sX3f/swwNCHa7XfHx8fL09ORqXQDAP54xRsnJyfL19XXchCwzpaSkOL7ie6/c3d1vexOugIAAvf/++5Z7wfz6668KCAhw3GK8Ro0a+vHHH9WiRYvbHi9DA0J8fLwOHz6ckU0CAJDpAgMDb/pV1YyUkpKiXZu2yiuf9Q6pd8Pd3V2VK1e+ZUho1qzZTe94GhcXl+7cfH19Hff+uJ0MDQhp33vf2nOUrp3N2EfnIuMN/H29ppRp6OwycBfoq+xl4O/rZX4Pu/OGcLrkEq/q8OHD6e7bkllSU1Pllc9PW3uO1rWzF+5p31xFCqruR6FKTU2951t5+/n5KT4+3vE6Pj7+rsJQhgaEtGmFa2djlHD6fEY2jUzg7e1NP2UT9FX24u3tLeN21dll4C7Y/ndjsaycFr929kKW/n8uV66c4wm1Pj4++vHHH9WzZ8877sdFigAAuKAvv/xSV69eVefOnTVs2DD17NlTxhi1b99eRYsWveP+BAQAAFxEyZIlHV9jDA4Odixv2LChGja8t2lK7oMAAAAsCAgAAMCCgAAAACwICAAAwIKAAAAALAgIAADAgoAAAAAsCAgAAMCCgAAAACwICAAAwIKAAAAALAgIAADAgoAAAAAsCAgAAMCCgAAAACwICAAAwIKAAAAALAgIAADAgoAAAAAsCAgAAMCCgAAAACwICAAAwIKAAAAALAgIAADAgoAAAAAsCAgAAMCCgAAAACwICAAAwIKAAAAALAgIAADAwsPZBQAAkJPUlGTucR9bZhRyB4wgAAAACwICAACwICAAAAALAgIAALAgIAAAAAsCAgAAsCAgAAAACwICAACwICAAAAALAgIAALAgIAAAAAsCAgAAsMhxD2t6oOUTajRhsNy9vRS9P0qrer6hpCvx6bZ5tF931ezXXSkJ13Tu4K/6pu8YXbt4WR65vNVyeqhKPFpFstl0asd+fdN3tFKuJapIlQpqNXOUvPx8ZOx2rX9jso6s2eSks3Qd9Ff2QV+5HmOMnhv2jSoHFtaQno/q8pVEvTBitQ79FiO73ehfIZU1tFctZ5eJTHLbEYTk5GS99tpr6tq1qzp06KDvvvsuq+rKFD6F7lPbuRO0uH1/Ta/YXJd+O6HGYUPSbXP/k7VUd+iL+rTRM5pdPURHvtmk4A/GSJLqjegjNw93zazaRrOqtpFHbm89Pry3JOmpzyZp26Q5ml2trZb3eF0dFr8nN0/PLD9HV0J/ZR/0les5+OsFNX5mkZZ8e9ix7N9TNqtE0Tw68NXz2rmkh2Yt3Ksf9p5yYpXITLcdQVi1apXy58+vSZMm6eLFi2rXrp0aNWqUVbVluHJNH9epXQcUc+SYJGnXzAV6ad9KfdN3tGMb/xqV9Fv4Nl05FS1JOrhsrYLnjJObp6eObdqlS0dPScbIGKMzew+qcKXykqTZQe1kUlMlSQXKBejapVjHa/w19Ff2QV+5numf71HPjlUVUDyvY9mUEY2Umnr9QcWnz8UrMSlV+fJ4O6tEZLLbBoTmzZurWbNmjtfu7u6ZXlBmyluqmGJPnHG8jj15Rrny5ZFXHl/HUOipHftUa0AP5QsorsvH/1C1556Sh7eXfArm12/rtjr2zRdQXLUHPaMve/1bkhy/sPofWaf895fQmoFvydjtWXh2rof+yj7oK9czbWQTSdK6rUcdy2w2mzw8bOox5Cst+TZK7Zo8oAplCjipQmS2204x+Pr6ys/PT3FxcRowYIAGDRqUVXVlCpubm2SMZblJ/f9fNse37Nb3o6er8/JpenHXUhm70dULF5WalOzYxj+okp7b/Ll2TvtMv3y9MV1b75dvovfLN9Xjw3rp/ga1M+1ccgL6K/ugr3KW+e+01rnt/RVz+ZrGTN/m7HKQSe74LYbTp0/rX//6l9q2bavg4OCsqCnTXD5+Wn7Fizhe5y1RVAkxl5R8NcGxzMvPV0e/36kPajylD2u2V9TKcElSQswlSVKlzi3VY93HCh/2H22ZMFuS5ObpqUqdW0o2myTp0tGT+i18m/yrP5hVp+aS6K/sg77KGb7d/Lv+iL4iSfLz9VKXVg9q78/RTq4KmeW2AeH8+fN6/vnn9dprr6lDhw5ZVVOm+XXtFpWs/bAKlC8tSXrkpS46tDL9hZd5ihfRsxvnyyuPr6TrF09FLvhakhTYuoFaTH1T85v2VOSCrxz72JOT1XDcIFXu0kqS5OdfRPc3qKWj3+/KitNyWfRX9kFf5QyLVx/S6OnbZIxRYlKKvlgdpQa1A5xdFjKJzZibjAv+z7hx47R69WqVLVvWsezDDz9Urly5brp9YmKiIiMj9V3wACWcPp/x1WaA8i3qX/8qlpenLv56XMv/NVT3lS2lNnPGaXb1EElSzb7dVLNvN9nc3HRiy25902+MUq4lqu+hNcpdIJ/jIitJOrF1j77pN0ZFKgeq5fSR8s7rJ2O3a0vYh/r5i9XOOs27EmqiNNpWwdll3Bb9dR19lX36SrreX+bwUGeXkSGeG/aNKj1QSEN6PqpLsdfUJ3StIn+5/vs9pPEDGj3gcbm52Zxc5V+XVHqMIiMjVblyZXl7Z+4Fl2nvkbHBA2Tu8T3S5l9Ieb+cmiV1Oo55u4Bwr7JDQMD/yw5vOriOvspeXCkguDoCwq1xJ0UAAGBBQAAAABYEBAAAYEFAAADABdjtdo0cOVKdO3dWjx49dOzYsXTrP/roIz311FNq37691q1bd8f2ctzDmgAAcEXh4eFKSkrSokWLFBERobCwMM2cOVOSFBsbq/nz52vt2rVKSEhQSEiImjRpctv2GEEAAMAF7N69W/Xq1ZMkVatWTZGRkY51uXPnVvHixZWQkKCEhATZbHf+aiojCAAAuIC4uDj5+fk5Xru7uyslJUUeHtff6v39/dWqVSulpqaqd+/ed2yPEQQAAFyAn5+f4uPjHa/tdrsjHGzatElnz57Vd999p40bNyo8PFz79++/bXsEBAAAXEBQUJA2bdokSYqIiFBgYKBjXb58+ZQrVy55eXnJ29tbefLkUWxs7G3bY4oBAAAX0KRJE23dulVdunSRMUbjx4/X3LlzFRAQoEaNGmnbtm3q1KmT3NzcFBQUpLp16962PQICAAAuwM3NTWPGjEm3rFy5co6/DxgwQAMGDLj79jKsMgAA4DIICAAAwIIpBgAAslDZotfkbrt6T/ukFrmmrH5GMiMIAADAgoAAAAAsCAgAAMCCgAAAACwICAAAwIKAAAAALAgIAADAgoAAAAAsCAgAAMCCgAAAACwICAAAwIKAAAAALAgIAADAgoAAAAAsCAgAAMCCgAAAACwICAAAwIKAAAAALAgIAADAgoAAAAAsCAgAAMCCgAAAACwICAAAwIKAAAAALAgIAADAgoAAAAAsCAgAAMCCgAAAACwICAAAwIKAAAAALAgIAADAgoAAAAAsCAgAAMDCIzMaHfj7enl7e2dG08hgoSbK2SXgLtFX2Yst8G1nl4C7kZjo7Ar+sTIlIEwp01AJp89nRtPIQKEmSqNtFZxdBu4CfZW9hJoomS+DnV0G7kbTJVl+yMJV/OR9+do97ZOYz09Z/a7KFAMAALAgIAAAAAsCAgAAsCAgAAAACwICAACwICAAAAALAgIAALAgIAAAAAsCAgAAsCAgAAAACwICAACwICAAAAALAgIAALAgIAAAAAsCAgAAsCAgAAAACw9nFwAAAP4+u92uUaNGKSoqSl5eXho3bpxKly7tWP/9999r+vTpkqSHHnpIoaGhstlst2yPEQQAAFxAeHi4kpKStGjRIg0ePFhhYWGOdXFxcZo0aZJmzZqlxYsXq0SJErp48eJt2yMgAADgAnbv3q169epJkqpVq6bIyEjHur179yowMFBvv/22unbtqkKFCqlAgQK3bY8pBgAAXEBcXJz8/Pwcr93d3ZWSkiIPDw9dvHhRO3bs0IoVK+Tj46Nu3bqpWrVqKlOmzC3bYwQBAAAX4Ofnp/j4eMdru90uD4/r4wD58+dXlSpVVLhwYfn6+uqRRx7RwYMHb9seAQEAABcQFBSkTZs2SZIiIiIUGBjoWFe5cmUdPnxYMTExSklJ0b59+1S+fPnbtscUAwAALqBJkybaunWrunTpImOMxo8fr7lz5yogIECNGjXS4MGD9cILL0iSmjdvni5A3AwBAQAAF+Dm5qYxY8akW1auXDnH31u1aqVWrVrdfXsZVhkAAHAZBAQAAGBBQAAAABYEBAAAYEFAAAAAFgQEAABgQUAAAAAWBAQAAGBBQAAAABYEBAAAYMGtlgEAyEK2WvllS7Tf2z7e+TOpmltjBAEAAFgQEAAAgAUBAQAAWBAQAACABQEBAABYEBAAAIAFAQEAAFgQEAAAgAUBAQAAWBAQAACABQEBAABY5LhnMTzQ8gk1mjBY7t5eit4fpVU931DSlfh02zzar7tq9uuulIRrOnfwV33Td4yuXbwsj1zeajk9VCUerSLZbDq1Y7++6TtaKdcSVbRqBbWcMUq58vkpMTZO69+coqMbtjvpLF0H/ZV90Feuxxij597bp8r359GQduXSrWs//kf5F/DWtJeqOKk6ZLYcNYLgU+g+tZ07QYvb99f0is116bcTahw2JN029z9ZS3WHvqhPGz2j2dVDdOSbTQr+YIwkqd6IPnLzcNfMqm00q2obeeT21uPDe0uSuqycob1zvtDMKsFa9FR/tZo5Sr5FC2X5OboS+iv7oK9cz8ETV9T4ze1asu20Zd3EpUe0+ecYJ1SFrHRXAWHfvn3q0aNHZteS6co1fVyndh1QzJFjkqRdMxeoSrfgdNv416ik38K36cqpaEnSwWVrFRjcUG6enjq2aZc2jZspGSNjt+vM3oPKV7q4che8T3lL+WvfpyskSfHR5xW9P0rlm9fL2hN0MfRX9kFfuZ7pXx9Vz6YB6ljXP93yjQfO69s959S7eWknVYascseA8OGHH+rNN99UYmJiVtSTqfKWKqbYE2ccr2NPnlGufHnklcfXsezUjn0q07C28gUUlyRVe+4peXh7yadgfv22bqtifjkqScoXUFy1Bz2jn79Yo4QLF3Xp95N6+Jl2kqT8ZUqqdL0ayuNfOOtOzgXRX9kHfeV6pr1URV2fKJFu2R8XrmnQhz/ps8HV5Z6jxp9zpjt2cUBAgN5///2sqCXT2dzcJGMsy03q/z+X+/iW3fp+9HR1Xj5NL+5aKmM3unrholKTkh3b+AdV0nObP9fOaZ/pl683SpIWtOmjhzo000v7V6nBmIH65evv0+2De0d/ZR/0letLTrGr6zt79G7PSvIvkMvZ5SAL3PEixWbNmunkyZNZUUumu3z8tErUetjxOm+JokqIuaTkqwmOZV5+vjr6/U7t/XiJJClP8SJqMHaAEmIuSZIqdW6pVjNC9U2/sYpc8JVjP5ubmxa06SOTmipJ6v7tR4patT4rTstl0V/ZB33l+n48clm/RV/V4I9/liSduZioVLvRtWS75vR/+A57IzvKUYNEv67dopK1H1aB8tfnzh55qYsOrfwu3TZ5ihfRsxvnO4ZG643oo8gFX0uSAls3UIupb2p+057pfoFJUvAHY1QxpLEkqWSd6ipc6QH9Fr4ts0/JpdFf2Qd95RlkwvoAABlqSURBVPrqVLxPxz9urL1T6mvvlPrq3TxAnR73Jxy4sBz1Ncer52K08rnh6rhkqty9PHXx1+Na/q+h8q9RWW3mjNPs6iG6cPh3bQn7QC/s+EI2Nzed2LJb3/S7fqV1k3eGSjab2swZ52jzxNY9+qbfGH3Za6TazBmnJ0L7Kinuqha26ZPu0xPuHf2VfdBXgOuxGXOTicM/OXnypF599VUtXrz4ttslJiYqMjJS3wUPUMLp8xlWJDJHqInSaFsFZ5eBu0BfZS+hJkrmy+A7bwinS2q6RJGRkapcubK8vb0z9Vhp75EPbR8j78R7+5pooncB/Vx7ZJbUmeauphhKlix5x3AAAABcR466BgEAANwdAgIAALAgIAAAAAsCAgAAsCAgAAAACwICAACwICAAAAALAgIAALAgIAAAAAsCAgAAsCAgAAAACwICAACwICAAAAALD2cXAABATmIrk1e2VPu97eOeN5OquTVGEAAAgAUBAQAAWBAQAACABQEBAABYEBAAAIAFAQEAAFgQEAAAgAUBAQAAWBAQAACABQEBAAAXYLfbNXLkSHXu3Fk9evTQsWPHbrrNCy+8oAULFtyxPQICAAAuIDw8XElJSVq0aJEGDx6ssLAwyzbvvfeeLl++fFftERAAAHABu3fvVr169SRJ1apVU2RkZLr1a9askc1mU/369e+qPQICAAAuIC4uTn5+fo7X7u7uSklJkSQdPnxYX331lQYOHHjX7fE0RwAAXICfn5/i4+Mdr+12uzw8rr/Nr1ixQtHR0XrmmWd06tQpeXp6qkSJErcdTSAgAADgAoKCgrRhwwa1bNlSERERCgwMdKx7/fXXHX9///33VahQoTtONRAQAABwAU2aNNHWrVvVpUsXGWM0fvx4zZ07VwEBAWrUqNE9t0dAAADABbi5uWnMmDHplpUrV86yXf/+/e+uvQypCgAAuBQCAgAAsCAgAAAACwICAACwICAAAAALAgIAALAgIAAAAAsCAgAAsCAgAAAACwICAACwICAAAAALAgIAALAgIAAAAAsCAgAAsCAgAAAACwICAACw8MiMRgf+vl7e3t6Z0TQyWKiJcnYJuEv0VfZiC/7S2SXgbiQmOruCf6xMCQhTyjRUwunzmdE0MlCoidJoWwVnl4G7QF9lL6EmSubLYGeXgbvRdEnWH7Nsecnt6r3tY/eR4jOnnFthigEAAFgQEAAAgAUBAQAAWBAQAACABQEBAABYEBAAAIAFAQEAAFgQEAAAgAUBAQAAWBAQAACABQEBAABYEBAAAIAFAQEAAFgQEAAAgAUBAQAAWBAQAACABQEBAABYEBAAAIAFAQEAAFgQEAAAgAUBAQAAWBAQAACABQEBAABYEBAAAIAFAQEAAFgQEAAAgAUBAQAAWBAQAACABQEBAABYEBAAAIAFAQEAAFgQEAAAgAUBAQAAWBAQAACAhYezCwAAICex3feAbJ7J97ZPsqcUn0kF3QIjCAAAwIKAAAAALJhiAADABdjtdo0aNUpRUVHy8vLSuHHjVLp0acf6efPm6euvv5YkPfHEE+rXr99t22MEAQAAFxAeHq6kpCQtWrRIgwcPVlhYmGPdiRMntGrVKi1cuFCLFi3Sli1bdOjQodu2xwgCAAAuYPfu3apXr54kqVq1aoqMjHSsK1asmObMmSN3d3dJUkpKiry9vW/bHiMIAAC4gLi4OPn5+Tleu7u7KyUlRZLk6empAgUKyBijt99+Ww899JDKlClz2/YICAAAuAA/Pz/Fx///dyHtdrs8PP5/oiAxMVFDhgxRfHy8QkND79geAQEAABcQFBSkTZs2SZIiIiIUGBjoWGeM0csvv6wKFSpozJgxjqmG2+EaBAAAXECTJk20detWdenSRcYYjR8/XnPnzlVAQIDsdrt27typpKQkbd68WZL06quvqnr16rdsj4AAAIALcHNz05gxY9ItK1eunOPvBw4cuLf2MqQqAADgUnJsQGg7L0x1Bj9/03UPtHxCL+1bpb6H1qjD4inyyuMrSbK5uanZ5DfU9+Bq9f9lrWr07uLYp0D50nr2+8/08k9f64UdX6hghbJZch45AX2VvdBfrsMYo2cnR+id5b9a1rUf/6P6zbq3T6TIXnJcQChUsaz+9d0neqhDs5uu9yl0n9rOnaDF7ftresXmuvTbCTUOGyJJqtG7iwoG3q8ZlVvrw5odVHvQMypes4ok6anP39GPsxZqRqVW2hj6vjotmZJl5+Sq6Kvshf5yLQdPXFHjN7drybbTlnUTlx7R5p9jnFAVstIdA4LdbtfIkSPVuXNn9ejRQ8eOHcuKujJNzb7dtGfOF/r5izU3XV+u6eM6teuAYo5cP89dMxeoSrdgSVLFdo0VMXeZTGqqrl2KVeTCr1W1exvlKV5EhSqWVeTC67ewPLJmk7z8fFSs+kNZc1Iuir7KXugv1zL966Pq2TRAHev6p1u+8cB5fbvnnHo3L32LPeEq7hgQbnfrxuxodf+xilzw1S3X5y1VTLEnzjhex548o1z58sgrj6/ylfLX5ROn063LW7KY8pby15U/zkrG3LAuWnlLFsuck8gh6Kvshf5yLdNeqqKuT5RIt+yPC9c06MOf9Nng6nLPcePPOc8du/h2t250RTY3t3S/jNKYVLtsbrZ062w2m+ypdtnc3GT+vI/NJpOamtnl5mj0VfZCf2VvySl2dX1nj97tWUn+BXI5uxxkgTt+zfFWt2688e5MruTy8dMqUethx+u8JYoqIeaSkq8m6PLx08pTvIhjXZ7iRXTl5BldPv6H8vgXTtdOnuJFFHvyjJB56Kvshf7K3n48clm/RV/V4I9/liSduZioVLvRtWS75vR/+A57Izu64wjCnW7d6Gp+XbtFJWs/rALlr8+vPfJSFx1a+Z0kKWrld6r2fHvZ3N3lnS+PKnVppUMrwnXlVLRijhxXpc4tJV2fazV2u6IPHHbaeeQE9FX2Qn9lb3Uq3qfjHzfW3in1tXdKffVuHqBOj/sTDlzYHd/pg4KCtGHDBrVs2dJy60ZX4V+jstrMGafZ1UN09VyMVj43XB2XTJW7l6cu/npcy/81VNL1i6ruKxegl/atlLuXp3bPXqRjm3ZJkpY+/aqCPxyr+m/2Ucq1JH3RceBNh1Px99BX2Qv9BWRfNmOZ4EvPbrdr1KhROnz4sOPWjTfemelGiYmJioyM1HfBA5Rw+nymFIyME2qiNNpWwdll4C7QV9lLqImS+TLY2WXgLiQ1XaLIyEhVrlz5jo8//rvS3iMrl4ySt2fyve2b7KnIkxWypM40dxxBuNmtGwEAgGvjiyoAAMCCgAAAACwICAAAwIKAAAAALAgIAADAgoAAAAAsCAgAAMCCgAAAACwICAAAwIKAAAAALAgIAADAgoAAAAAsCAgAAMDijk9zBAAAGSh/Belen9icKOlkZhRza4wgAAAACwICAACwICAAAAALAgIAALAgIAAAAAsCAgAAsCAgAAAACwICAACwICAAAAALAgIAALAgIAAAAAsCAgAAsCAgAAAACwICAACwICAAAAALAgIAALAgIAAAAAsCAgAAsCAgAAAACwICAACwICAAAAALAgIAALAgIAAAAAsCAgAAsCAgAAAACwICAACwICAAAAALAgIAALAgIAAAAAsCAgAAsCAgAADgAux2u0aOHKnOnTurR48eOnbsWLr1ixcv1lNPPaVOnTppw4YNd2zPI7MKBQAAWSc8PFxJSUlatGiRIiIiFBYWppkzZ0qSzp07p/nz52vp0qVKTExU165dVbduXXl5ed2yvQwNCMYYSVKfqDW3PSj+GRITEzXs2n5nl4G7QF9lL4mJiVLTJc4uA3chKSlJ0v+/f2WF5OTM2Wf37t2qV6+eJKlatWqKjIx0rNu/f7+qV68uLy8veXl5KSAgQIcOHVLVqlVv2V6GBoTk/53B4cOHM7JZAAAyVXJysnLlypWpx3B3d5e7u7uiolL/1v63EhcXJz8/v3Tbp6SkyMPDQ3FxccqTJ49jna+vr+Li4m57vAwNCL6+vgoMDJSnp6dsNltGNg0AQIYzxig5OVm+vr6ZfiwPDw9VrlxZqal/PSB4eNz6bdvPz0/x8fGO13a73bH9n9fFx8enCww3rfcvVXkLbm5udzwgAAD/JJk9cnAjDw+P277J/x1BQUHasGGDWrZsqYiICAUGBjrWVa1aVe+9954SExOVlJSkX3/9Nd36m7GZrJx4AQAAmcJut2vUqFE6fPiwjDEaP368Nm3apICAADVq1EiLFy/WokWLZIxR79691axZs9u2R0AAAAAW3AcBAABYEBAAAIAFAQEAAFgQEODyjhw5opSUFGeXgT+x2+3OLgGZgMvaXAcBIYP81e+1InOtXr1aM2fO1E8//URI+IeYO3euLl++LDc3N0KCC4mJiZEk7oHjQggIGcBut8vd3V3GGO3bt09nzpxxdkk5njFGkydPVqNGjVS1alWtXLmSkPAPEBcXp7Vr12rWrFm6dOkSIcFFJCUladu2bVqyZIl+/PFHpaam0q8ugIDwN6WmpsrNzU3GGA0YMEBhYWH68MMPFR4e7uzScjSbzaaoqCgNHjxYTz/9tAICArRixQpCgpPY7XZ99NFH2rVrlxITE+Xh4aH//Oc/hAQXYIyRl5eXbDab3nvvPS1btkzu7u70qwsgIPxNaSMHH330kWrUqKF58+apQoUKioiI0Lfffuvs8nKktGeCzJo1S3ny5NGAAQPUtWtXlS5dWl9++aUiIiKYEspiM2bM0L59+1S9enV16dJF3bt3V4ECBfTuu+8SErIxu93umFI4fPiwatasqYIFC2rFihWSrt9dF9kXvfcX3fjL7Mcff9SiRYvk7e0tb29vNWrUSP7+/tq9e7cuXLjgxCpzHrvdLk9PT8XExOjkyZMaP368Spcurf79+6tr164qXLiwvvvuO0YRslhwcLCOHj2qYcOGqVKlSipatKjatWunwoULa9y4cY5rEpC9pAW7V155RWXLltU777yjqlWr6vDhw5o8ebLWrVtHGM/GMueG0C4uNTXVMXIQFRWlwMBADR06VP/973/1wAMP6JFHHlGLFi2UmJioggULOrvcHMMYIzc3N509e1b9+/dXmTJllJSUpHfffVdhYWF69tlnNW/ePF29elXe3t7OLjdHKVWqlDw8PHTkyBHHxWylS5dWy5YttW7dOscjd5E9GGMcIwd79+7V6tWr1a1bN7m7u+uRRx6Rp6enli5dqjp16tz26YP4Z+NWy3+R3W5X7969VaBAAUVERGj48OG6ePGiFixYoFdeeUV16tRxdok50pUrV/TKK684phTefPNNBQYGKjQ0VFOmTFGXLl3k7+/v7DJzpJiYGJ04cUITJkzQc88957gPfHJysjw9PZ1cHe6W3W53XHd1/vx5FS5cWOHh4Ro5cqRmzZqlqlWrKjU1VampqfLy8nJ2ufgb3EeNGjXK2UVkFydOnJCvr6/c3NwUFhamggULatSoUapYsaL+85//qEePHipRooQKFSqkYsWKObvcHCPtQlHp+puN3W5X0aJF9fnnnys4OFjh4eHauXOnQkNDedqoE+XOnVvFihVTkSJF9J///EfFihVT2bJl+YSZjaSN0tntdg0YMEB79uzRpEmT1KZNGzVq1Ei9evXSY489pmLFitGvLoAphrv0ww8/KC4uTqVK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\n",
      "text/plain": [
       "<Figure size 576x396 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_model(tuned_knn, plot = 'class_report')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "iidIhDUufuOx"
   },
   "source": [
    "### 10.3 Decision Boundary Plot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 361
    },
    "colab_type": "code",
    "id": "9_2R_acYfuOz",
    "outputId": "aedd0637-b29e-49e5-999a-a255be6bd313"
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAe0AAAFXCAYAAACP5RboAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO2deXxU5dn+rzN7QgBZAkIilAQiInVJKeBPI2CwrhSpUhEdFa0KKmiLYKWCFgW3YssbK1KrQEFcaMtifdVXWhdEwQpFpewMQoIIRBRDlllyzu+PyQyznzMzZ87zPHPu7+eTj2Ry57puxpBnzjX3eR5JURQFBEEQBEFwj4V1AwRBEARBaIMWbYIgCIIQBFq0CYIgCEIQaNEmCIIgCEGgRZsgCIIgBMHGuoFUyLKMxsZG2O12SJLEuh2CIAiCyCmKosDv96Ndu3awWOKvq7letBsbG7Fr1y7WbRAEQRCEoVRUVKB9+/Zxj3O9aNvtdgDAbf+3Dw1+Gc0BWfV7CmwW1TotNXrX8aplFk+e+p88dD96dvDC0hYeWSU7WhV/Si2rFPy3oKUusqb3jBVwHvwurs7ickFuaUmppaVG7zpetcziKXr/LDz11qr4eDN27doVXv9i4XrRDkXiR5oDONzkh6xhGxiLBNU6LTV61/GqZRZPnvqf8c+emF29ByUdvAAAvyIBSC0WrIHGumCN5PVDOXIY+PpYXJ0sWQAl9YsOLTV61/GqZRZP0ftn4am3lsPhAICkbwkLM4jmsll1q9NTi4Wn6P2z8OS5f6tF/bWz1WLTXBeibMoyuGrjF2wg+IpeDS01etfxqmUWT9H7Z+FptBbXV9oEka/4WyXISvBq/NP3t+OrA/Xo0aszKqsqdNGXvAFI6i/+CSK/KWoPFBbGP+4qAFqa1b9fS12mWk1NwIkG9e+LQeJ573Gv14utW7di9OrdFI/nSMssnjz2P7t6Dz792z8xaHh/lPTpioP76vHpezswesIFCaq1xePBOgXlty+C68A3Kco0RHoaYz9d63jVMoun6P1H1BWMd6PbDTfB0a4oURHU/y1prctMy9d4AkeWLUHz8qURJRacVd+ArVu3YuDAgXA6nXEqFI8L6Cl6/yw8eex/64fbwgs2AJT06YpBw/tj87r4OybSicclbwCS2gsKii3JM8daTD2L2qPbDTehXVER7BLiP6xS4sczqctQq11REbrdcFMwDUjn+dL0LBAEoTubtjeHF+wQJX264tD+FFfIGiibshTO2uw0CEJoCguTXGHzhaNdUeL4PgXCLNotgVbd6vTUYuEpev8sPHns/2vbD3BwX33UYwf31aNH7y5xta1yAK1yILWhokBpadGU1Gm5RUVLjd51vGqZxVP0/jXXaXkPTGudjlqabh3T5saefI9KWWmZxZPH/n0/+DE2/GtneOEOvaedaBhNSzxePnExzrx2Yer3stswQ1Qqev8sPEXvX3NdaJMEAK2trdi9f3/Cj1Yt76FHaMUiyzLm/PkF3DTrIdz2yCM48PXXWfdO0+MEwYiZIzwo6XA+/rNuD7as340evbskGULLHtlhg+RvhcTv3ClBMMFTV4fKZRuAjsXRXzh+FJtvtKDfaadlrP3up5vg8/uxZPZv8fmevfj9spfw+/umZtWvMIt2vkelrLTM4slz/+dW9cO5VX1T1qhF45LXD8hKwnhNdlix9xk3Tnt0TfgqnNfYklcts3iK3n+4LsH2n9FFMS9eOxZD6tQj6iElUZ0WrQi27NyJ/3f22QCAs/r2xTbPvtRSFI/nXouFp+j9s/DkrX+7RQ7fxJXt5iqSN4Dyu4MbqSSK1zw1bvh6dYHitEFp22WJ19iSVy2zeIrev+a6FJF22nUpahqbm1FUWBCus1osCLQmfzFP0+MEwQl2iwyHNfghQcHMER70bNvGNFtSTYvLjpMLtafGDW+vzrp4EgShTruCAjQ2n7x6lhUZNqu2C4NkUDwuoKfo/bPwZN1/8P3r4CI9+90ySBEj3qpT4So1isMGRQIkJTpeUwB4am6Ar1f0NLoCc0SlovfPwlP0/sN16cbj2dSlqDmnogIfbN6Mn5w3FJ/v3IW+Ku+PUzxugBYLT9H7Z+HJsv/IKBwAZo3woGcHX/jzbONxT40bLX27Q5GkqHht78Kb4e0dfR/43oUT4O3dhdvYklcts3iK3r/muthI+/hRKN8eivrA8aNZx+MjfjwIDrsdN896GPOWLsNUtzvr3oW50iYIUdEzCk+Gp8aNsslLYbPYYdvVTFPiBKGRstJSbL5haIKvlKOstDQrbYvFgt/84tbQJ4Cc/YEAwiza+RSV8qRlFk+e+882Hg/hqXEDkFB+x4twHPou/F52LIrDhsbSDnDtaUq53anoUano/bPwFL3/cF0a8bjVakW/3r2TFGrYV5w2V0lMvkSlvGmZxZPn/vU+mnPvwgnYvuaXce9lh/DUuLH/jxPgTfL1EKJHpaL3z8JT9P411xk0PZ5uHU2PEwRjYt/P5gklYrKcIAgxoEWbIHKIEe9nZ0pwgK0bLdwEIRC0aBOEiaF7twlCLIRZtM0ylGSG/ll4Gt+/oml4DNA+iKbXwFqiukQjMqIPJYnePwtP0fvXXEenfOUeswwlmaF/Fp5G9z+7ei8WXrU7vKFKKvQeRNNCZF3o3u1YRB9KEr1/Fp6i96+5zuBBtC/27MFtjzyiLkX3aRMEQRCENj7bvQM7Du5F/5JynN2vvy6ai9e8jv/98EO4nNpedKghzJW22FEpv1pm8WTRv1DxeNtWqJEBnuhRqej9s/AUvX/NdQmi6gX/uxzrAutgGdyMdYF1WPC/y3WJx0/r3h2/++Uv1XVA8bghWiw8Re+fhaeR/Ydu88okqk5Vk6t4HAgOpG178z609Oue1klgetfxqmUWT9H711wXE2lv2b0DrX0a0b13JwBA996dIPdpwmd7d6atFUv1kMGwafy9QvdpEwQDeL7NSw26DYwwIzsP7g0v2CG69T4FO+r2MOooOcIs2qJHpbxqmcWT4nHtdaGFu7G0A2RnfGweC69RqVmiXl61ePaMjbT7l5Tj8P5vox47sv879O9ZnrZWNlA8boAWC0/R+2fhyaJ/keLxWEJbnW5ffW9cbB4Lr1GpWaJeXrV49oyNtM/u1x/Wfe3CC/eR/d/Bsq8QZ59+Rtpa2UDxOEEYDM/blmZD6Oo7eOWdj39DwuxMunw8qmxVkD8pwAW2CzDp8vG6afcsLsZf5qjf8qUFYW75Ej0q5VXLLJ5G9R/5frbe8bheWpl6Bk8RA8omL4Vrz2FACZ6BxGtUapaol1ctpp5pnPIVydn9+kff6kWbq2SO6FEpr1pm8aR4PDPPREROmstOG/wVPTVdfVPUy7+n6P1rrhP4lC9hrrQJguCL0JW31WJH77tehGvPEUiKfkM5BEHEI8yVtohRqQhaZvE0ov/g+9knFy1Rp8cz0Tp5q1jySXOKevn3FL1/zXW093juET0q5VXLLJ5G9B98P9sX/jxf4/FkdaHYPNE+5gBFvSJ4it6/5jqB43FhFm2CIMQguCUqTZgTRC4QZtEWLSoVRcssnrnvPz76MlM8HknojO7YZ4SiXv49Re9fc12KqPq999/XVKelxh8I4ME/PotbHp4N94zf4P1PN6WWong891osPEXvn4VnrvufXb037hhOs8XjkSQ67pOiXv49Re9fc12SqHrTJ59g+xNzsemTT1LWadECgP/9cD06FrXHiw/PQs0Dv8YTi5ekluJtetzv92PGjBk4ePAgfD4fJk2ahOrqaiNbIAjCIEIxOU2UEyLQ2tqKTYtewLATx/Hh4hdxzo9+BKslu+vai4cOwcghg8OfW63ZXycbeqW9Zs0anHLKKVi+fDmef/55PKLhUPAQYkWl4miZxTO3/SdelMwaj4eIjckp6uXfU/T+NdcliLTXvLQM5/z3MwDAOVu3YM1LL2Udjxe6XGhXUIDG5mZMf/oPuPPnY1NL8RaPX3rppbjnnnvCn1ut2qJIQKyoVCQts3jmsv9E0Thg7ng8RGRMTlEv/56i96+5LkGkffi9d1HU9uciAF+/964u0+Nff/MNbn9kDi6/8AJcdv75qaV4mx5v164dioqKcOLECUyZMgX33nuvkfYEQTBAcdggO23Bq26aKic4pfvwETjR9ucTAE4dPiJrzW++O4475z6OKePH4aoR2esBDAbRDh06hBtvvBGjR4/GqFGjNH+fOFGpWFpm8aSjOTPz1EPLU+PG9tX3Ytf866I2YEkUKooeu4ruKXr/musSRNo/vf4GbDnzbADAloHn4KfXX591PP7i6tVoaGzEn/++Crc9PBu3zX4ULT5f0notvRs6iFZfX49bbrkFs2bNwnnnnZfW97psVjT51X9RaqnTU4uFp+j9s/DMVf+pTvWyWmxolf2qWlrqQhG0ljo9PfXSCtWFtj4FQgePRG99anG5IDc3qWppqdNTyyyeovcfrlMtkuIWW6vVih9NuBXvPzwTQ275RfDt2wR1WrRCTLvpRky76ca2Ogsgp+6Mu3j8ueeew/fff49nn30WbrcbbrcbLRpfPREEj0Se6kWkBx33SfDGjwYPxhn3z0DloEGsW0mKpCj83o/h9XqxdetWjF69G4eb/JqSiixfGOWsjlcts3jmqv/Z1XsSDqEFkZB8J+5060KLmpY6PT310kpdFzruU4IFUFSvkwBJQ52WGr3rRPcUvf9QXXEx+q1YDXvS14J8/DvxK8DusaOBI4fbSiw4q74BW7duxcCBA+F0OuNUaHMVAT1F75+FJx3NmZmnXlpqdcGr7u7cHvNpFk/R+9dcR3uPE4T5SPV+NpE+nho39rbd200QWdHUBF/jCfU6xvgaTwBN6u/TRyLMedqiTxLzqmUWz1z0//BFqd/P5nGSWxRPBUj5gojXqWTRPUXvP1ynyDiybAm63XATHO2K4otaNb4rrKUuQy1f4wkcWbYEONEQfoy76fFsEGGSWEQts3jmon81aHo8M8+9Cyeg/I5FcO3/JmmdqSahaXo8o7rm5Uuxf80qoLAwQU0B5JZmDVrqdRlrNTVFLdih3tUQZtEmCF6wW2T0aB+gaJwgeOdEQ9zCCAAoKAQ0vADQVKenlgaEWbR5j0pF1TKLp55aM0d4UNLBB7WJ0XyJqll4Bg8bAaQkT7Gpol5BtcziabSWMINook8S86plFk+9+2cxyZ3P0+OxNaFp8mST5LxOJYvuKXr/LDyN1hJm0SYIwlx4aJKcIOKgeFxAT9H7Z+Gpn1YwrxV1H/BsPDev24VDB46hR6/OqKyqMMQTSDxJbobYlYWn6P2z8KR4PAk8R6WiR71m8NRLK3QMp9ni8dWLPkT30s644vqh6F7aGasXfZhzTyD6aM9IzBC7svAUvX8WnhSPEwTBFZ++vwuDhvdHSZ+uAICSPl0xaHh/bF63i3FnBGE+hFm0+YxK2XiK3j8LT320To4ys4jHWUXyh+uOhRfsECV9uuJQ233UOY/H2ybJIzFD7MrCU/T+WXhSPJ4EHqNSVp6i98/CUw+tUDQOmGt6vEevzji4rz7qawf31aNHW2yd64n1RJPkZohdWXiK3j8LT4rHCYLgisqqCnz63o7wwn1wXz0+fW9H1DBarqFJcoIIQtPjAnqK3j8Lz2y1goeDsI3H9dLKxHP0hAvw6sy/o+j0HujRuwtGT7gg556JCE2SmyF2ZeEpev8sPCkeTwJvUSlLT9H7Z+GZjZbdImPWCA96dvCFHzNTPA4Am1/egP+3YS96WKW4K2yjNnSJnCQ3Q+zKwlP0/ll4UjxOEJwxc0Tq07zynYAvAOvyjbjUKsH68kYEfNqurAmC0B9hFm2eolLWnqL3z8IzU63YWDyEmabH181ciVG+4IuWUV4v1s1cmXPPZIQmyc0Qu7LwFL1/Fp4UjyeBl6iUB0/R+2fhmanWzJhYPISZ4vGuX9ShvRT8VdFesqDL1rqceyYjNEnur+iZdF/yEKLHriw8Re+fhSfF4wTBCcGrbKL+h6VoUGQAQIMi45uBpUz78dS4sZemyQmTIsyizUNUyoun6P2z8MxEK9V72WaKx6seGYPXHU4AwOtOJ6oeGZNzT611qQ5HFT12ZeEpev8sPCkeTwIPUSkvnqL3z8LTjEdzbl63C2+8tCHhdqPpaNkcNrSOH4K3WhXI48+DzWFLWJdOb9nUhOqS7UseQvTYlYWn6P2z8KR4nCA4IFE0nmoR5I1UB3xkQuV1Q+G5ZjDOHTdYpw4JgsgEYRZt1lEpT56i98/CM12t2Gg8dhH8+wvvqmqxise1HPCRSVQ97I5hmuq06umhlWhf8hCix64sPEXvn4UnxeNJ4DkqFT3qNYNnOlqxV9mZnnLFKh5XO+AjHU8tsIrHgcT7kocQPXZl4Sl6/yw8KR4nCMbEXmVrWQR5Qu2Aj3yD9iUnzIQwizavsSsLT9H7Z+GZjVamiyCreFzLAR8i7Heebl3sJLnosSsLT9H7Z+FJ8XgSeI1dWXiK3j8LTy01douMPp0CcQNoiRfBnaqnXLGcHh894QIcrjuGN5Z9jMN1x6IO+EjHUwss4/EQiSbJRY9dWXiK3j8LT6O1hDnliyByzcwRHvQ6RUar7I/72ugJF2Dzul3Ysn43evTugp/dOjxhHU9UVlUAVay7IAhCT4RZtHmJSnnwFL1/Fp5atVLFs5GLoNmO5hTBMzRJLrXl5KLHriw8Re+fhSfF40ngNXZl4Sl6/yw81WpCE+M8RL3JalgezSmCZ+wkueixKwtP0ftn4UnT4wTBALMfv5kv0CQ5ke9QPC6gp+j9s/BMXXNy7piXqDeXWmbwVCB+7MrCU/T+WXhSPJ4EXmNXFp6i98/CM1XN7Oq9KGm7yuYl6k1Uk2vP2G1aRYvHQ4QmyUWPXVl4it4/C0+KxwmCMBy99ypnjeKwwdurs+qZ2wQhGsIs2rzGriw8Re+fhWeymuAAmhjxeK48k23T+u/3/5u2VrZ1eml5atzYNf+64MKtosVrVMrCU/T+WXhSPJ4EXmNXFp6i98/CM1GN3SJj1ggPenbwhR/jLeqNrMmVZ7JtWr/e/23aWtnW6a2ldnwnwG9UysJT9P5ZeFI8ThAGQRPjQfJ9r/Lg/dsUkxP5gTCLNq+xKwtP0ftn4Rldo8TF4iF4jHpDNbnyTLZX+blV/dLWyrYuF1qh28CSxeS8RqUsPEXvn4UnxeNJ4DV2ZeEpev8sPCNrZlfvxXOjt0fF4iF4jnpz6Zlor3JRp8cT1aSKyXmNSll4it4/C0/ae5wgckjsWdnESfJ9r/JQTC4paqNpBMEvwlxp8xq7svAUvX8Wni2B1rbBs70p38fmOeqlDV2y00oWk/MalbLwFL1/Fp4UjyeB19iVhafo/bPwdNmsbYNn8ZF4JDxHvbT3ePZauT7Ck6Je83nS9DhBEEQOoWlyQmSEWbR5jV1ZeIrePwtPPY7mTLeO4nG2nslqYmNyXqNSFp6i98/Ck+LxJPAau7LwFL1/Fp5atXiOenmIl0Xy1LI/OcBvVMrCU/T+WXjS9DhB6IzdIqNH+wBNjRNRUExOiIgwV9oEkSkzR3ho9zMiDjp7mxARWrQJgiAIQhCEicd5HXBi4Sl6/yw883WoCgieg33owDH06NUZlVWnG+KZqzrDtRR+h5JYeIrePwtPGkRLAq8DTiw8Re+fhWc+DFUlqsv0HGyzD6KFUJw2+Ct6anpvm4aqyJMHLSaL9meffQa3283CmjAZ+bxtaeJzsE/H5nW7GHcmDp4aN/bSe9uEQBi+aD///PN48MEH4fWmNxTEa+zKwlP0/o30DA2g5UPUG1uX7BzsQ/u/0c1TCzw/Z5q1NGxHTlEvefKgZfii3atXL9TU1KT9fbzGriw8Re+fhWc+RL2xddmcg03xeEydhjiGol7y5EHL8EX7kksugc0mzPwbQXBL4nOwdwZP6yLSgu7ZJkRBmEE03mJXlp6i92+c58nMMx+i3kR1ic7B1tNTLy0WnuloeWrc8J6W+n1tinrJkwctYRZtXmNXFp6i92+U5+zqvShp21AlH6LeZHWVVRW44obzUFlVwW3/LDzT1VKcqa+2KeolTx60hFm0CYIgcgntkEaIAJM3l0tLS/Haa6+l9T18xa5sPUXv3wjP4K1e+RWP66VlFs+MtFJMkVPUS548aAlzpc1T7MraU/T+jfAM3urlC3+eD1Ev7/Eyb54ZaaWYRaOolzx50KIxbiLvyOcNVYxi87pd+PrAtzi1VyeaRicIjhDmSpuX2JUHT9H7z7VnohO98iHqNcoztDXq5dcP0bQ1Ks/PWdpaFI/rpmUWT4rHk8BL7MqDp+j959Iz2VV2PkS9Rngm3hq1f8qtUXl+ztLRkrwBSCkWbYp6yZMHrbyOx+VAAKjbFvd4wGqF3ON0WGiTl7yDzs3OjsN1xzBoWHQcXtKnK7as3w1UMWrKIMqmLIWzVn0LWIJgiTBX2hlFpXXbIAGQOhZHfXhbWxMu5rp4CqZlFk+Kx7XVZbI1Ks/PWVpaKvuPU9RLnjxoCbNoZxy7diyG1KlH1Ac6FufWUyCtfPJMNYBG8bi2usRbo+5IOYzG83OWllaSH54VfhkARb3kyYcW5cNE3kDReOZsXrcLhw4cQ49enTF6wgXYvG4XPlu/F6f27qR5a9R8ZK1fRvu2//6kgHU3BCHQoq13PGu0J69aZvHMh3hcL63YutWLPsSg4f1RWVWBg/vqsXrRh8GFukqCljMref17ZhuP+2QZ9QowzmHBKz4ZLU1NcKjcS0hRr/k8KR5Pgt7xrNGevGrli6favdkUjyeuSzUtng/PWVpaMT9Ar/iBK9q+dIUNeFnDa0iKes3nSfG43hw/Gn+tcPwoi06IHELReGaknBY3EZI3AEmOfswlAe0tweua9hYLXK0yBLrOIfIUYX4CM4pKSwdAAaAcPxr1IbV9LSeegmmZxTMf4vFceKaaFs+H50yrVtnk+Nu9WhSgQQ6u5A2yjBY50XdHQ1Gv+TwpHk9CJrGrxWaD5QdnxX0U9jtX0z3avMbLvEfVRnraLTL6dAqobluaD1FvLjxTTYvnw3OmWSvBD9A4O/BG27r/RgC4vkOhqhZFvebzpHicINJg5ggPep0io1X2s25FWELT4lvW70aP3l1MOS2uOIJnaUvKyTfTHBYLukoy3vLLKJaCn2u42CaInKJp0d61axc++eQTBAIBDBkyBGeccUau+4qD19iVhafo/evlGTp+k/X0tWhaieoqqyridjwz03PmqXGj/PZFcB2IjshH2i1Y4Zcx1m6hqJc8udBSjcdXrVqFO++8E7W1tfjqq69w11134a9//aumJvXEDFEvCy2RPUPHb5rlmEmu42UOPfXaXGWsPfhrkqJe8uRBS/WnetGiRVixYgU6deoEAJg4cSJuvPFGXHPNNRraJAiCIAhCL1QXbVmWwws2AHTu3BmSZPxpxfke9bLSEtUzFI0DfMTLImmZxZP2HmerZRZP7uLx008/HXPmzMHOnTuxc+dOzJkzB/3799fUpJ7ke9TLSktUz1A0Dpgn6uU+XubMU694PEQuotLQvuZGehqlZRZPo7VUF+1HH30UDocDM2bMwAMPPACbzYaHHnpIU5MEQRCiEJogN4rIfc0JQiuqL0WXL1+Oq6++GtOmTTOin6Tkc9TLUisfPCnqJU89tDw1bpTfsQjO/d8kvOjWMyptaWqK2tfcJ8twWOKvoXiMZ8mTrZbqlXYgEMBDDz2Eyy+/HHPnzsXHH3+MQEDbPwY9yeeol6WWiJ6x+4ybJerlPl7mzDMTrb0LJ6ClX/eEV9x6RqWvtMbsa55kmwEe41nyZKulumjffvvtWLp0KV577TX06dMH999/P4YMGaKpSYLIBbTPOJFLPDVueHt1zqmHS5Gj9zU3fraXEBTVl6Jvvvkm/v3vf+PTTz+F1WrFZZddhqFDhxrRWxS5jl3lQACo2xb1WBMQ3AGpdEDKbU8pHjfOM3JqPARFveSpp5bk9QNy/Ci5rvG4HNzPvL3FEtzXPMnkOo/xLHmy1VK90n7sscfw9ttv48orr8TTTz+NBx54ACNGjNDUpJ7kPHat2wYJgNSxOPyhdCwOxrAxi7lunhxoieYZOTUewixRrwjxMk+emWqVTVkGV+2xuDo9o9LxHQqj9jW/zp65Hq9Rr1k8udtc5YMPPoDH48GGDRswf/58fPnllygvL8e8efM0NSoUHYshdeoR9ZAC0FGeBEHoSnBfc0Tta04QWtD0kyLLMgKBAFpaWtDS0oKCgoJc9xUHi6hXKxSPG+OZKBoHzBP1ihIv8+KZsZZBUfVIuwUNAKrtyX8N8xjPkidbLdVF+8ILL8SDDz6IEydOYPLkyXjrrbfw6KOPampST1hEvVqheNwYz0TROGCeqFeUeJkXz4y1kgyF5SIqHZtiwc6Vp1FaZvHkJh5fuXIlxowZg1WrVqFz59xOUhIEQRAEoU7SRfsvf/kLxowZw82CbUjUe/xofDKm4f1sisfZelLUq0/d5nW7cOjAMfTo1RmVVRXmfc44meRm4Sl6/yw8uYvHeSHnUW/pACgAlONHwx/OE8eC/35LB+TGkwMtUTxjN1SJxCxRby49Vy/6EN1LO+OK64eie2lnrF70YV48ZxlpGRiP61HHq5ZZPLmJx3fv3o3q6uq4xxVFgSRJ+Oc//6kqLhIWmw34wVlRj9nsVlj8+g6tEZlBG6rkjk/f34VBw/ujpE9XAGj7b398+v52nFvVl21zBEFEkXTR7t27N/70pz8Z2UtKzBL1mqF/vT15iZdF0YqtO1x3DIOGVUR9vaRPV2xZv1vTos3r35PicbZaZvHkJh632+0oKSlJ+mE0+RT18qSVD54Uj2fn2aNXZxzcVx/19YP76tGzd3HaWtnW8aClOBOf9kVRL3nyoJV00a6srNTUCEEQYlNZVYFP39sRXrgP7qvHp+/twKBhZzDujA1G7D1OEJmS9KXorFmzjOxDFb1iVzkQQNOXnyPhCbYxe4zzGi/zHFVTPM6/VqK60RMuwOZ1u7Bl/W706N0FoydcYPrnTEH0TBpFveTJg5b5psfrtgX/MUbsMS4l2WOc13iZ56ia4vHcaeXas7KqAlfccB4qqyqy1sq0jhetvQsnwNu7S2Xqr5cAACAASURBVNRjFPWSJw9a2n6q8w3aY5wgCBUUR/C9bUlJMplGEAzQdKW9adMmvPzyy/D5fPj3v/+d654Sonc8q4YcCKBp938gf/l5/EcgOk6jeJytJw/xshFaosXLmXpuXrcLb7y0AZvX7cpaK5u+Qu9th5ZsinrJkwct1UV7yZIl+MMf/oDFixejsbERs2bNwgsvvKCpST3RO55VRecY3SxRNcXjudMSKV7OtC7RJi+ZaunR196FE9DSrzsUSaKolzy50FJdtFeuXIkXXngBBQUF6NSpE/7617/ib3/7m6YmhactRo/8QEdtt8EQBJEewU1eTo/a5GXQ8P4pr7iNYN/vroOvlKbJCT5QfSlqsVjgcDjCnzudTlit+p6SpQVd49kM9xjPxtMsUTXF4/xr8eqZapMXVKXvmVVfigLJFwAUoGzyUjhrj0GW1N9NpKjXfJ7cxeODBw/GE088gebmZqxduxaTJk3C0KFDNTWpJ7rFrqUD4LRao/YYV0KLuMoe49n0ZpaomuLx3GnlezyebJOXHjFT3Fo9M+1L8gbQ9/bFGDB6PgZcNR+u2mMAKOolTz60VH+qp0+fjtdeew2nn346Vq1ahWHDhmHcuHGamuQRi80GW9lZtKc4QXBGZVUFVi9aDyB4hR3a5GX0hAsM7aNsylI4a78x1JMgtKK6aN9222144YUXmC/ULGJXrTE6xeNsPXmMennW4tkzuMnLzqhNXjLVyrSv4K1eABTaXIU8+dNSjcebm5tx6NAhTU3lEsNj1zRidIrH2XryGPXmQivf4/FQTewmL9loZdKXp8aNbW/eF54aD0FRL3nyoKX6U33s2DFcdNFF6NKlC5xOZ94ezRkLxegEYW48NW6UTV4K154jtMEKwQ2qizaLe7ITYZao1wz96+3Ja9TLq5ZZPPXQOrlwH0ZA9kNCdGQeC0W95vM0Wkt10U62A5rRx3O6bFY0abjq1VKnpxYLT9H719vTarGhVfZnXaN3nd5aAAz3FP0500PLU+Nuq7PjB7f9Ca79yYfULC4X5OYmVU8963jVMoun3lpqqC7aGzduDP/Z7/dj06ZNGDRoEK666ipVcYIgCNGRvAFAUeCs/x5SwuMBCcI4VBftxx57LOrz7777Dr/85S9z1lAyzBL1mqH/dD3tFhlS/Bx/GIp6yTNXWpLXj7K7lwbv1ZYsgJJ61aao13ye3E2Px1JYWIiDBw+m+21ZY5ZJaDP0n67nzBEe9OzgS1rH8yS0nlpmmR5PR0vyBiC1+AE5/kWdHn2VTVlGm6uQJ1daqj/VbrcbUtttD4qioK6uDhdeeKGGFhMjyzIefvhh7Ny5Ew6HA48++ih69+6dsR5BEOalbMpSuPZ/gz0Lb4a3d9eMNN5d+C9ceFtVwq8pDhtkZ/DXpL9XZ9h2NdMkOcEU1UV78uTJ4T9LkoROnTqhb9++GRuuXbsWPp8Pr776KrZs2YLHH38cCxYsUP2+fIl6edPi3VMtGgco6jWzZ2hRjbyfOh2tzS9vQJ/XNmBzkR2V18VvzxwaQgsioWzyX+A88A0kXwBSgh9LinrN58ldPP72229j8ODBGDx4MH784x+jb9++uP/++zU1mYhNmzahqir4qvacc87B1q1bNX1fvkS9vGnx7qkWjQP5E/Wq1VA8Hl/nqXFj++p74euV/v7kAV8A1uUbcalVgvXljQj4Ui/yVost7OdN4AdQ1GtGT27i8d/85jeora3F1q1bsXv37vDjgUAADQ0NmppMxIkTJ1BUVBT+3Gq1IhAIwGbT9o+VMAd2i4we7QMp74kliGxYN3MlbvJ5AcmCUV4vlsxciRFPjFX9PskboClyghlJV8pJkybh4MGDmDNnDu6+++7w41arFeXl5RkbFhUVobGxMfy5LMuaFux8iHp51OLVc+YID0o6+ACVaBzIn6jXKC2zeKrVdP2iDu3bjttsL1nQZWudJr0+970MR903UBC/0QpFvebz5CYeLy0txZAhQ7BmzRpUVFTgtNNOQ2lpKbp164bt27drajIRlZWV+OCDDwAAW7ZsQUVF8v2FI8mHqJdHLZ49zRb1qtVQPK6vVv0PS9HQdgtXgyLjm4GlmvRCe5N7ExwZSlGv+Ty5icdD1NTUYPHixQgEAjjllFNw5MgRDBw4ECtWrNDUaCwXX3wx1q9fj3HjxkFRFMydOzcjHYIgiGyoemQMXr/6jxjv9+N1pxNVj4xh3RJBqKK6aK9cuRLvv/8+5syZg0mTJsHj8WD58uUZG1osFsyePTvt7xM56uVZi0fP0MQ4r7ErC0/R+2fhqVZjc9jQOn4I3npxHeTx58HmSP3rME6PpsfJk4GW6vR4t27dUFRUhH79+mHHjh0YPnw4k6M6RY96edXi0TM0Mc5r7MrCk+Lx3GhVXjcU+34+FOeOG5y+XoIpSYp6zefJXTxeVFSEVatW4cwzz8SyZcvQrVs3tGh8ZaEnol418q7FsyevV3AsPEXvn4WnVq0Lb7sQaQ88KgpdaZMnEy3VK+05c+bg2LFjGDJkCEpKSjBr1izce++9mprUE1GvGnnX4tmT1ys4Fp50pc1WK7JO8gbQ9/bFcB2IP+2LrhrN58ndlXb37t0xbtw47NixA9OnT0dLSwsKCws1NUkQBCEqodO9Qjjrv0dz1wKUT14GZ23y4zn1YoVfxrUFObcJe421p30UBcEA1UX7448/xqxZs9Da2opXX30Vo0aNwu9+9ztccMEFRvQXRvSol1ct/jxP/pLkNXZl4Sl6/yw8M9WSvH5AAfpMfRkuz5GT25UaeMrXWr+M9gD+7/tGjLSn3mIoW8+Q11q/jJGS2FE1C0/u4vGnn34ay5cvR4cOHVBcXIxly5bhySef1NSknhgR9cqBAOQvPw9/2A789+TngUDc16PqAql/QYgeVRvlObt6L0o6eAGIEZUaqZUv8TKvWqETw8rvXoYBV81Hwd4jUfuLGxWV+mQZ9Qpwqd2CeijwyalfKGTjGeWlAAGHI2OtTOsoHk+vRvWnWpZlFBcXhz/P5rAQ7qnbFhwI7Rj8+3rRNiB6/CiUum1A6POOxVHf5j1+FKjbBvzgLON6JQhCNyRvAOV3LzUk9lbjFT8wxh788xVW4GU/cJPTAC8b8FJjC26iHaW5RvV/z6mnnop3330XkiTh+++/x0svvYSePXsa0VsUhkW9HYshdeoR9ZACAMePavt6Fn1prcvvePwkPESlvHiK3j8LT9UaRYHkC8BRewQ9n/gHnG3nZifDqKjUJQHtLW3bq1oscKlsdJ6NZ5xXQIaGAJbbeJmFJ3fx+OzZs/H666/j0KFDuPjii7F9+/aMNkfJFhZRr56IGFUb7RncVOUkvMauLDwpHtdXKzQBPmD0fPSd9le4VBZswLiotEUBGtoi8QZZRovK3WjZeMZ5WbQNo/EaL7Pw5CYeP3z4MLp3744uXbrg6aef1tQUQWRDcFMVL+s2iDwlchrcqAnwTBhnB/4eAMY5gDdagevsBnkFgOvbuwCv8ftwENpJ+rJq4sSJ4T+/+OKLhjSTChZRr56IHlVTPM7Ws1UO8Bcvc+7ZKgcXacnrh9TiR9ndf8GAq+ZjwFXzoxZsI+LNtYVOLKjogbWFTlUth8WCrhLwll9GMSQ4VK5+s+k/yksCbL7UZ9fr4ZlLLRaeRmslvdJWIu5PfP3113HLLbdoaixXuGxWNPnVf9FrqUtZc/xo/EZHx48CcgA4UgsgwUZIKd7PlgMBoG4bHFYrWlpjPEsHwBJzLGnW/eeojoWn1WJDq+xX1dJSp6cWC89Q1Gu0p6jPmeQNoOBoE3r+9m+qV9QWlwtyc5Oqp5a6RDXzhvTFD28+Hxf2KcbBfUcxb/F6TPv8q5RaI+2W4H3aHdpl5JlOXchrrN2i63OhtU50T7211Ei6aEvSyXcXIxfwvKZ0QHBKvG0RdkUutIoF6HYalIZjQEPE+1+Nx2G3WuA/97LEmm0T6d6iztFbFYcm0mninCB0p2zKUhQeadb0yzSXvFPoxA9vPh8lfYJ3nJT0KQZuOh9rH/gbLmpO/b1GbnZCG6ukD6sNaTRNfUQu4KwwIuq12GxRi2hAAixtr1fkLz+H1LE7pLLKqO9Rvj2E1uNH466Yo0hj4pzXqJricbaeovdvuKfCR+y6p7QzLuwTfYtoSVkxPujWHhcdP5ETT1608tkzVxvSZDU9vnv3blRXV6O6ujrqzxdddBGqq6s1NaknPE9CO6z6TaPzMsnNgyevU8ksPGl6PM06iY+p5H51x3BwX/SL84Oeozj9SEPOPHnRylfPXG5Ik1U8/vbbb2tqhCD0IPZ2L4LIhNCEuMqtzYYxssmLeYvXA20R+UHPUXyxZD2m+WRw0iKRJqw3pElqVVJSYlwXGuA56vXFDphlAa9Rda49E93uxWXsyshT9P5z7tm2UUrZ3UvD91zLkrb3G3Mdu07duAdrv6jFByWd0O/gt5ja5NW1N55iYzN45nJDGl02V+EFLqLe40ehfHso6gPHj6rH40m+z/D+s6jLtae/VYIcM+/IZezKyJPi8eR1kRulRG6SwlPsOrLJi0m7v8bIJq9hnqy18tUzlxvSaKrR5EYEJ8sBKMePRn8AsPQaoPp9zhPH4r4PpSm+z2Q88l45DjXkaINlIq8pm8LHnuGEORhnD25EA7RtSNNO2wsAvRBma3jWUW/sZHkkqbYjCH1f5CR6tr3lYzyeCC5iV048Re8/V56S14+4iKYN0WJXHjxF798Iz+CGNHJONqSheNwALRaeovevtY517MqTJ8XjievKpixLum+4aLErD56i92+U50i7BQ0Aqts2pDGyL2EWbYIgiEgkb4CbKXHCfLDakIbicQE9Re9fa53Zol6jtIT3VBQoLS0om5z6vWzRYlcePEXvn4Und0dz8oLoUW+mWnIgAPnLz6M+bAf+G/xzIPUvOB76z6bObFGvWg3F40HKJy7GmdcuhOuA+p7iWoisiz3YI109EaPeXGmZxZObozmJ0IL5ReIvJjjsIye07V2Ojie3QvQCkGjvcsKE5DIST3Swx9SNe3JjRhAZIsSiLdftQFOH3oBVvV1do959X8QtmADiDvvIebycxt7lunnmUEtrnSmiXgZaQnpGbJ7irD2maXOSdGLLpAd7fFEbvreaol7y5EFLiHhcAuD4aqemWj2jXofVGl4wIz9iF3EW8bKeWhSP8+9p9ni8fOLJzVPWFjqxoH/PhBF2JOnElntKO4cX7BAlZcXYXdIpLT2Kes3nSdPjiWjfmXUHBEFwwLwhfSHPG4cLfz8O8rxxmDekry66yQ726HfwW130eWaFn0bwRUKMRRva9/fWM+pl4am1Tk8tisf592yVA+aO5JXEZ1P/8Kbzk15xx0aNSttHorqRTV58sXh9eOEOHewRisYT6WnxTMQKv8xNPBt5xGS2WpnWie5J8XgStB5/qXs8brBnwro09i7XzTOHWlrr8jXqzVTLrPG45A1AUqApwo4kFDXKDhtkpw17/jQBLf26Q5GkhHVTN+6BZeor+GDyMljueyVuCE2PeDO8SCrazrTLZTwbe8SkT5aFj6pZeNL0OG+E9gmPeSyEHAggUPtfyImuyvWYMC8dEBx6i/B0Wa1oafsaQeQ7ob3F+xU6cXDf0aiFW0uE7am5Ad7eXdv+7EbZ5KVw7TkCSYm/7h7Z5MXI3V/r+xdoI7RIjnNY8IrfD581uCUmK2KPmHzZD0xg1g2hFTGutBuOsYnHe56e9JCQ8IJZtw3e1lZIHYujP9q+lq5nbJ3FZoPlB2dFfQR6nRn8s8oLAorHc6PFwtO08biihDNtLRF2JHJLC2SHNe7K2lPjhve0zlF1Wsg23nzFH1wcAeAKa3CRzLVnqrq4IyYl8aNqFp5Gawlxpa0AcPX5IVo0HLjhslnR5E+9IGipAYBClxNNWu6D1nBLllZPPfsX3dNqsaFVVv/NpqVOTy0WnqHY2GhP1s9Z+cTFUZuohM+m7lWMfgeOYmqSBRsIRo17n/gZfKXRg6yhuD2yTm5uUu1fS12qmvhFUn0ALFvPVHWhIybbWyzBIyYVfZ+LXPfPi6feWqo6qhUcYCntb8xGJgRBcIXS9n505NXyyCYv7tp/LOkVdiTlU5ZFbXUqeQMov5vNUZ5x5zBruAjJJbFHTF5nZ9sPoQ0hFm2A76hXTy1eo2qKx9l6mjUe99S4sX3VPVFxNpBe1Ch5A5Ba/JBa/Ci7+y9xC7ZR8WYmi2Qu49ngEZMIHzHpsFiEj6pZeNL0eBJ4noTWU4vXSW6aHmfraebp8diIHEhvErd8yjIMuGo+Blw1P+ExnkZN/0Ytkg67piG0XE8vRx4xma1WpnWie9L0uIioTJgTBEEAwUVyhV/GtQVOTe+DGgGrIyaJzBBm0eY26i0dAKluG+REi3TELVnc9s+xZ75FvbxoieipILidcQiRY9exdn1jaF61zOJJ8XgSeI16LTYbCvudG3dbVuwtWbz2z7NnPka92WiZNR7fuzB+UxQzxK4sPEXvn4Un7T1OmBK7RYa2PaIIM+KpccPbi84gIAiKxwX0FL3/RHUzR3jQs0P0LTz5GvWy1hLZMxSTmyF2ZeEpev8sPCkeT4LoUS+vWjx75mPUm42WWePxEJExuRliVxaeovfPwpPicYIgiCRQTE6YHYrHBfQUvX+tdfke9bLSEt5TMUfsysJT9P5ZeFI8ngTRo15etXj2zOeoNxMts8fjYSRjY8u1hU4sqOiBf3Uo1N1zhT/1/uM8xrPkyVZLmEWbIAjCaOYN6Qt53jhc+D/XI/D41Zg3pK9u2uGztVUWboKIRJhFW/Sol1ctPjwTn5xgiqg3DS2K5NswKB5/p9CJH958fvj87pI+xfjhTedjbaEza8+WpibUK8CldgvqleBZ25nqsYh6X/2+0XBPkSNtPbWEWbRFj3p51eLBc3b1XpR0iD+xyRRRbxpaFI+3YVA8vvu0ruEFO0RJWTF2l3TK2vOV1oiztW3Jz9ZOpReK1o2OZ4MJgaIpIaB4XH8tYRZtgiAIo5AdNpwy4nQc3Fcf9fhBz1H0O/ht1vouRY45Wzu972cVrftkWVNCQOQOYRZtcaJesbR49jRF1JuGFsXjQRSHDY2lHaCoLHSZxpayw4q9z7hx9lWV+PS9HeGF++C+eny+fEPKc7w1x+OytrO1E+nFLpwtTdoOHtEjnn3Fry0h0NMzF3UiawmzaIsS9Yqmxdoz1falpoh609CieDyIp8aN/X+cgJa+0fuRx5JpbOmpccPXqwsAYPSEC3C47hjeWPYxjtR9h7sOf6eL5/gOhZrO1k6kF7dwanudrEs865KQVkJA8bj+WkwW7XfeeQdTp05lYU1wRqLtSwlCC0ZttFJZVYErbjgPg4adoZtn1NnaEjSdrR0ibuFUjIuoWxRtCQGROwxftB999FHMmzcPcprvhYge9fKqxdYz9b94M0S96WhRPJ6gLsWPUMaxpQJAiRFWFCgtLZC8fkBObpqO50i7BQ0AqlOcZ51IL27h1PirVI94dpwdmhICPT1zUSeyluGLdmVlJR5++OG0v0+EqFdELZaeyabGQ5gh6k1Hi+Lx+DrFaUsaV2caW/aduBiu3YchtfjDH31vX4wzr12IAaPnw1V7TLOWWt3YFAt2Mr3YhfN6DZu+aO1NrSbdhIDicf21craN6YoVK7BkyZKox+bOnYvLL78cGzduzJUtQRAmwlPjRvkdi+Da/42uuuVTlsU/WKBtccw1wYVTjlo4jZzhHmm3YIVsxViLxjfTCV3J2aI9duxYjB07Vjc9/qNeMbVYeNotMrq1a4FE8TgTrXzzVBw2KBIgxfw4iR67pqobabdghV/GWLuFSf9jrYrau1u6e/L6/ynv4/FM4T3qFVWLhefMER48XH0APTv4UtaZLepVq6F4PHFdcDisS1yN6LGrWl0oWhe1/3zxNMX0OGFeUt3iRRAEQaSGydGcQ4YMwZAhQ9L6Hl6jXhaeIvcfusWrVVZfulnHrjx5it5/zjwVBZIvkHCiW/TYlYWn6P2z8KR4PAm8Rr0sPEXtP/Iqm6Le9LXoOYuuk7wB9L19cdKJbtFjVxaeovfPwjNvpscJIhbaSIXQA8kbgPPo9+j527/BWavv1DhB8I4wizaPUS8rTzH7j44vKV5mpyWyp+T1o+zupXDVfQeo7AQmeuzKwlP0/ll4UjyeBN6iXpaeIvYfu5EKRb3pa9FzBpRNWQZX7TFTxK4sPEXvn4UnTY8TBEEQBJEQiscF9BS9f4DiZZZaQnu2vctihtiVhafo/bPwpHg8CTxFvaw9Re8foHg8Ey16zoJ7jctOG/wVPVMekQmIH7uy8BS9fxaeND1OEASRBE+NGwBgtdjR+64X4TwQnB6XfK2QYk/mIog8RJhFm+eol+Lx1HXB+7NpepwXrXzxDC3gAFA2eSlcew4DCsJ7AYgeu7LwFL1/Fp4UjyeB56iX4vHUdb++cB9ObR+9zzhFvelr0XOWvM5T48a2N+9DS7/u4dhc9NiVhafo/bPwpOlxIu945L1yHGpwsm6DMAHBw0M6s26DIHIGxeMCeorYv79VgtwWXUoSxcsstfLdM3RUZ0D2B3/eVLR4jUpZeIrePwtPiseTwEvUy4OniP0/8l45blt1Jr5qu+KmqDd9LXrOtNWFovJdr0fH5cngNSpl4Sl6/yw8KR4n8prQFTdBGAHF5US+IcyizVPUy9pT5P5D729TvJy+Fj1nmWmF4vJkrxV5jUpZeIrePwtPiseTwFPUy9pT9P4Biscz0aLnLDOtUFzu7d0lYR2vUSkLT9H7Z+FJm6skgcerRlaeovcP0CAXSy2zeMbWhK64I+/lBvi96mLhKXr/LDzpSjsJPF810pV2+nV01Zi+Fj1n2Wklu+Lm9aqLhafo/bPwpEE0giCIHBK84la7EYwg+ESYRZvnqJfi8fTrWEelonnSIJp+Wp4aN1r6dgtG5eA3KmXhKXr/LDwpHk8Cz1EvxePp17GOSkXzpHhcX63gwt09fGKY3HZ6mOxMfhVOUS958qAlzCAaQRCEnkSeGNYq+8OPl01eCueBb+jkMIJLhFm0eY56KR7XXhc68YuXqFQUT9H7Z+GZqVZoMS+/fRFcbUd/AhT1kicfWhSPC+gpcv8zR3jQs4OPq6hUBE+Kx43XUmKicop6yZMHLWEWbYIgCCOhLVAJHhFm0eYx6mXlKXr/gDhRKS+eND3ORktxnBxQayztkHI7VICiXjN6UjyeBB6jXlaeovcPiBeVsvakeJyNlqfGje2r78X21fdi/x8nYNubqU8Oo6jXfJ4UjxMEQXDMyfu8aYMWwniEWbR5jnopHtdWF5ocB8SMSll6UjzOViu2zlPjhve0+Pe7Keo1nyfF40ngOeqleFxbXWhyHBAzKmXpSfE4W62EdQkutCnqNZ8nxeMEQRAEQSSENlcR0FP0/oH8ikpF0zKLZ077V5SEY+QU9ZrPk+LxJPAW9bL0FL1/IA+jUgO06DljpxVbVz5xcdRuaSEo6jWfJ+09ThAEwSmSNwAoCiSZdSeEWRFm0eY56qV4XL0ucnIcyLOoVDAts3jqotV2YIjkC8BRewQ9n/gHXLXHkpZT1Gs+T4rHk8Bz1EvxuHpd5OQ4kF9RqVFa9JwZqyV5A+h7+2Kcedk8DBg9H32n/TXlgg1Q1GtGT5oeJwiCYIzkDaD87qVw1sa/b00QLKF4XEBP0fsHBI1KGXqK3j8Lz0y1JK8fZXcvhTPmqpqiXvLkQUuYK22eol7WnqL3D4gXlbL2pHjcGK3gFfayhDE4Rb3GeK7wJ57y4/XvSfE4QRAEI8qmUCTOkrV+Ge3b/kskRphFm+eol+Lx1HWxk+OAOFEpL56097hBWinO3aSoN7eePllGvQJcaregXgl+nmtPEbWEWbR5jnopHk9dFzs5DogRlfLkSfG4QVopDu4SJV7mRStdz1f8wBVt/yuusAEv+3PvKaKWMIs2QRBErlEcNjpykxEuCWhvCS5J7S0WuOh/Q0KEWbR5iXp58BS9f0CQqJQjT4rHjdHy1Ljh7dU5YUrOe7zMm1a6ni0K0NAWiTfIMlqUxHV6eoqoJcyizUvUy4On6P0DgkSlHHlSPG6c1t6FE+Dt3SWujvd4mTetdD3H2YE32l4/vREArrPn3lNELWEWbUJMgkNoBCEWFJMbj8NiQVcJeMsvo1gKfk7EI8yzwnPUS/F48rrgEJo3rk6EqJQnT4rHjdXy1LjR0rcbFCk4UK6A/3iZN61MPEfaLWgAUG2PX5p4/XtSPJ4EnqNeisfTrxMlKuXFk+Jx47U8NW5se/M+bHvrPrT06w5/RU/ITlvCj9BVOcXj2XuOTbBg59pTJC1htjElCIJghafGDavFjlbZn/DrZZOXwrXniMFdEWZEmCttHqJeXjxF7x8QKyrlwZPicbZaanWeGje8p3VmHi/zpGUWT4rHk8Bz1OuyWSEHApC//DzxRyDAff9Ge4oWlbL2pHicrZamOomPeJkXLbN40vS4qNRtgwRA6lgc/dH2NTNCk+MEQRD6Yuh72g0NDZg2bRpOnDgBv9+PX//61zj33HM1fS/PUW+4rmMxpE49or6mAMDxo2L0r7NWsslxIL+jUt61zOJpdP+Kw4bG0g5w7WmClGIPc0DseJY82WoZeqW9aNEiDB06FMuWLcNjjz2G2bNna/5enqNemh5Pvy7vo9IcaNFzxk5LS52nxo39f5wAb6/4jVliETmeJU+2WoZead98881wOBwAgNbWVjidTiPtCYIgCEJocrZor1ixAkuWLIl6bO7cuTjrrLNw9OhRTJs2DTNmzNCsxzrq5clT9P6B/I9KedYyiyez/lWicUDseJY82WrlbNEeO3Ysxo4dG/f4zp078atf/QrTp0/H4MGDNeu5bFY0+dUXBC11emqF6k4AwPGj8f9ejx/V3TMX/RvtabXYkt7zmk4NCy0WnqFolp4zNlrpeGqZvrS43AUvdAAACjlJREFUXJCbm3Sp41XLLJ56a6lhaDy+Z88e3HPPPfjDH/6A/v37G2mde0oHQKnbFl6kY79mNmhynCAIQn8MXbTnzZsHn8+HOXPmAACKioqwYMECTd/Lc9TbEmiFxWYDfnCWIZ4ixOOpJscBE0WlHGqZxZPicbZaZvHMm3g8EVoX6ETwHPUa7Sl6/4B5olKKx9l5UjzOVsssnkbH47S5CkEQBEEIgjAHhpgtXjZKKzee6vmgaaJSDrXM4knxOFsts3jm9eYq2cDzRiG0uUp03ezqvShJ8X42kP8bbeRCi54zdlppeWqMx7XA4+Ye5MlWS5hFmyAIgiDMDsXjAnry27/CbbxJUa/5PCkeZ6tlFk+Kx5NgpnjZSC09PWdX78XCq3arRuOAiaJSHbXoOWOnlZYnxeOm8szrvcd5Rg4E4o7QDFitkFtbgdIBwfuwCYIgCIIhwlxp5zzqTXAetreos6bzsCkeD+2ARvF4LrXoOWOnla6nWkIucjxLnmy1hFm0DYl6287DjvxAx+LcejLW0sszuAOaj9t4Mx+iXnrO2Gml47l34QS09OsORUqek4scz5InWy1hFm2CX2ifcYKIxlPjhrdXZ9ZtEHmIMG/UsoiXtWL2eDxyn3Fe402Kes3nybp/xWGDIgFQ4mfTRI5nyZOtljBX2iziZa2YOR6PvcrmNd7Mh6iXnjN2Wpl4emrc2PbmffD27hJXJ3I8S55stYS50jaEFOdhE4lRO82LIMxO8IpbgqRouIGbIFTgetFW2n7IuxXYUGCT0RxQDwYKbBbVukQ18ulnA1/vAXDyFBanxQJvx3bAqX1T3vKVqScPWtl6FlgKYJdOXoVbYYdF0nBikoY6XrVYeFphBwB6zhhpZeNZ+8wd6PXQSjj3f3Ny4Xa5AC2xqpY6XrXM4qmzls/nA3By/YtFUpJ9hQMaGhqwa9cu1m0QBEEQhKFUVFSgffv2cY9zvWjLsozGxkbY7XZIKW6fIAiCIIh8QFEU+P1+tGvXDhZLfLrJ9aJNEARBEMRJhJkeJwiCIAizQ4s2QRAEQQgCLdoEQRAEIQi0aBMEQRCEINCirTMNDQ2YOHEibrjhBlx77bX4z3/+w7ol7nnnnXcwdepU1m1wiSzLmDVrFq699lq43W7s37+fdUvc89lnn8HtdrNug3v8fj+mTZuG8ePH45prrsE///lP1i1xS2trKx544AGMGzcO119/PQ4cOMCsF643VxGRRYsWYejQobj55pvh8XgwdepUrFy5knVb3PLoo4/iww8/xBlnnMG6FS5Zu3YtfD4fXn31VWzZsgWPP/44FixYwLotbnn++eexZs0aFBQUsG6Fe9asWYNTTjkFTz31FL799luMGTMG1dXVrNviknfffRcA8Morr2Djxo147LHHmP07pEVbZ26++WY4HA4AwVdnTqeTcUd8U1lZiZEjR+LVV19l3QqXbNq0CVVVVQCAc845B1u3bmXcEd/06tULNTU1mD59OutWuOfSSy/FJZdcEv7catX3TIZ8YuTIkRg+fDgA4KuvvkLXrl2Z9UKLdhasWLECS5YsiXps7ty5OOuss3D06FFMmzYNM2bMYNQdXyR7ri6//HJs3LiRUVf8c+LECRQVFYU/t1qtCAQCsKXYVtfMXHLJJairq2PdhhC0a9cOQPBnbMqUKbj33nsZd8Q3NpsN999/P9555x38z//8D7s+mDnnAWPHjsXYsWPjHt+5cyd+9atfYfr06Rg8eDCDzvgj2XNFpKaoqAiNjY3hz2VZpgWb0I1Dhw7hrrvuwvjx4zFq1CjW7XDPE088gfvuuw8///nP8cYbb6CwsNDwHmgQTWf27NmDe+65B/PmzcOwYcNYt0MITmVlJT744AMAwJYtW1BRUcG4IyJfqK+vxy233IJp06bhmmuuYd0O16xatQoLFy4EABQUFECSJGZvJ9BLdp2ZN28efD4f5syZAyB4pUSDQ0SmXHzxxVi/fj3GjRsHRVEwd+5c1i0RecJzzz2H77//Hs8++yyeffZZAMFBPpfG86HNxE9+8hM88MADuP766xEIBDBjxgxm80q09zhBEARBCALF4wRBEAQhCLRoEwRBEIQg0KJNEARBEIJAizZBEARBCAIt2gRBEAQhCHTLF0FwTF1dHS699FKUl5dHPf7cc8+hR48eaWnV1tZiwYIFObltrLGxEb/73e/w4YcfoqCgAEVFRZg8eTLOO+883b0IwszQok0QnNOtWzesXr06a52vvvoKtbW1OnQUjaIomDhxIs444wy88cYbcDgc2LZtG26//XbMmzcPQ4YM0d2TIMwKxeMEISj19fW488478bOf/QxXX301PvroIwDA4cOHceutt+LnP/85hg8fjvnz5wMInqi2detW/Pa3v8XGjRujjq/89a9/jb///e/hK/vrrrsOEyZMQGtrKx577DGMGTMGP/3pT7F48eK4Pj755BN89dVXeOCBB8KH5QwYMACTJk0Kb9rhdrvx5JNP4tprr8XFF1+M999/P+XfgSCIxNCVNkFwzpEjRzB69Ojw56NGjcIvfvELzJkzB1dffTWqq6tx5MgRjB8/HqtWrcI//vEPXHnllRgzZgwaGhowbNgwuN1uPPjgg3jmmWfw0EMPpTykZd++ffjzn/+M0tJSvPzyywCAlStXwufz4dZbb8XAgQMxaNCgcP0XX3yBgQMHQpKkKJ0f//jHmDdvXvhzv9+PV199Ff/6178wf/58DBs2LOnfIfKQFIIgTkKLNkFwTrJ4/KOPPoLH4wmfOBQIBFBbW4tbb70VGzZswAsvvIDdu3fD7/ejublZs1+XLl1QWloKAPj444+xfft2bNiwAQDQ1NSEnTt3Ri3akiShtbU1Tsfv90ct5KEjRvv164fvvvsu5d+BzlcniMTQok0QgiLLMpYsWYJTTjkFQPCKvEuXLnj88cdRW1uLK6+8EiNHjsRHH32E2N2KJUmKeszv94f/HLn3dGtrK6ZNm4af/OQnAIBjx46Fj3QMcfbZZ2Pp0qXw+/2w2+3hx7ds2YKBAweGPw/t1Ry5kCf7OxAEkRh6T5sgBGXo0KFYvnw5gODpcqNGjUJzczPWr1+PW2+9FZdddhn27duHw4cPQ5bl8FncANCpUyfU1tbC6/Xiu+++w6ZNm5J6vPbaa/D7/WhsbMT48eOxZcuWqJpBgwahb9++mDt3bnjx37p1KxYsWIA777wzo78DQRCJoSttghCUBx98ELNmzQqfg/zkk0+iqKgId9xxB6ZPnw6Xy4VTTz0VAwcORF1dHc444ww0NDRg2rRpeOqppzBs2DBcccUVKCkpwY9+9KOEHuPGjcP+/fsxZswYBAIB/OxnP0s4Df7MM8/g97//Pa688kpYrVZ07NgRTz31lOrkeLK/A0EQiaFTvgiCIAhCECgeJwiCIAhBoEWbIAiCIASBFm2CIAiCEARatAmCIAhCEGjRJgiCIAhBoEWbIAiCIASBFm2CIAiCEARatAmCIAhCEP4/cAu9xLQOn+YAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 576x396 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_model(tuned_knn, plot='boundary')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "JY8z7B8MfuO2"
   },
   "source": [
    "### 10.4 Prediction Error Plot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 401
    },
    "colab_type": "code",
    "id": "AtSP2JAXfuO3",
    "outputId": "e3230ae1-7d7e-4270-9935-f2dd54295dd1"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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++6PZw4cvY4/jvdHhw4dMv7xj3/ctv8ff/zRqFWrlv396t+/v2G1Wo0rV64YDRo0MHbv3n3H/WUYN46vmTNn2vvs2rWr8dVXXxmGkfNxlZSUZFStWtVo27at0bp1a6NevXpGixYtjPfee89IS0szDMMwZs2aZUycONGw2WyGYRjGu+++a4wePdrIysoyHn30USMlJcUwDMNYs2aNsWLFCnstN2fwY8aMMSZNmnTb133TzeNl3759Rr9+/Qyr1WoYhmF88MEHxuuvv24YhmG8+OKLxr///W/DMAwjMTHRiI2NveP6P9Zw8xj84/rMzEzj2WefNRISEgzDMIzU1FSjZcuWxv79+41vv/3WqFq1qpGcnHzHugFHmMGbgKenp30G4UhAQIDmzp2rHTt26OTJk/rxxx919epVSVLDhg312muv6ezZs6pfv74GDx6sYsWK5bj+dqKiouTv7y+bzSYfHx917txZ4eHhSk5Olre3t2rWrClJOnDggM6fP68333zT3tbDw0NHjx7V7t271bp1a/n6+srX11dt2rTR0aNHs42zb98+PfLII6pevbokqXnz5nf8bvrbb7/Vk08+af9et169egoODlZCQoIkqW7duvazH9WrV9fly5dv20+5cuW0du3aHMepWbOmvL29b7v8n//8R4MGDZKPj4+kG2cj/vj6a9eunWO/uX0dfx7/j7Kysm67PiMjQx4eHvblsLAweXp6KjAwUOXLl9fly5fvuL9Kly6tbt26aeDAgXrzzTd14sQJnTt3TmFhYZJyPq4uX74sf39/+/v59ddfa8iQIQoLC1NAQIAkafv27bpy5Yq++eYbSVJmZqZKlCghLy8vtWjRQhEREXr66afVoEEDNW7c+JbX5uHhISOXd+N+4okndP/992vFihVKSkrSnj177HW0bNlSY8aM0datW1W/fn299dZbd1zvyMmTJ3Xq1ClFR0fb112/fl1HjhxRpUqV9OCDD9rPhgDOIuBNoEaNGjpx4oTS0tLsISVJKSkpGjlypGbOnGlf99///lddu3ZVly5dFBoaaj/VfbOfLVu2aPfu3fr222/VuXNnzZ8/P8f1ISEht9QyderUHH+s5Ovraw8fq9WqSpUq6eOPP85Wb3BwsFauXJmtnZeX1y19eXl5ZQslwzB09OhRVa1a9bZj22y2bNvfbHMz9Pz9/e3r8xIKf1a0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\n",
      "text/plain": [
       "<Figure size 576x396 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_model(tuned_knn, plot = 'error')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "hxGSKMKZfuO7"
   },
   "source": [
    "*Another* way to analyze the performance of models is to use the `evaluate_model()` function which displays a user interface for all of the available plots for a given model. It internally uses the `plot_model()` function. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 421,
     "referenced_widgets": [
      "9cc0efb4189e48c6beb4fe1c0c4a2fdc",
      "a63ed06ee88c4ca3883ac38e665bddf8",
      "b046e2e525ca425a80aac86d7b665854",
      "36a827017abf468d939c97492b5c73ab",
      "17f607299eaf4b05a1542960ba1f8953",
      "e4c7bdc3be744945b405b9905048f64f",
      "bdb566b147ef4202b351fd1014883ce6",
      "0a505068ebbf4d068aa7d75f702ac715",
      "094d443554a84f2788d4802512cda617",
      "4c1ee7022483425d9541b0e49f1efcd2",
      "17810a03d1424e729b70ec2044e9e7f6",
      "9d7425bc499c4f57a680a7166389e5dc",
      "08ddc7a42f8d492faa945a5d7eac4a86",
      "0a1412c6e3f6498ca9d221f259716943",
      "6e43059d835f4d62aa1e5c5bf7d676e1",
      "c20470f03116445ab707f5857592d046",
      "52e6b5978ec94fdabdc9adf9286c3078",
      "d0366972e1664000b72674d0a285a785",
      "66b421a890bc462b97e5d9d23fe5809a",
      "904ec053638f498aa1d0e4944145f736",
      "d8e230198678421ea3afef9ca721090d",
      "a1a8e8de38404b83bec2300554e42aa8",
      "7448bcccbfaa432c8f1f9936a51ccf3c",
      "eae1b12ae33041e9a14d7372fd0d6be3",
      "2d502879922046aaba1d84769e93ff1b",
      "0dc3288edbff469189f52ebf88863853",
      "d360dbb5ee734c839b8a30238d824633",
      "f0c4a07ca3cf4460bed061f0609b9b2b",
      "57e3592dda974775b2fc52ee73ecb50c",
      "cc64cb2f6f8148d7ad9ce9d9cd16dd5f",
      "3dd8046812e942bf9e2ccc62ba4bf2a5",
      "a4291bb80392498ba074a033b6c60d86",
      "2c22eeecfa054ab59f5a2bc6ea4e7244",
      "46eb9473b4c64c59956eae387e60555a",
      "eecbd2ce9de64166bcfddadaef395d65",
      "4e0a64915ccd490aae253c73dbf91a99"
     ]
    },
    "colab_type": "code",
    "id": "K5pXw5FFfuO8",
    "outputId": "3efd9151-1313-4d83-ccbb-877e088c44bc"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "0cc46d4c2aa64aa0b74abe75b6d4b96d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "interactive(children=(ToggleButtons(description='Plot Type:', icons=('',), options=(('Hyperparameters', 'param…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "evaluate_model(tuned_knn)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Wo-Ob7AffuO_"
   },
   "source": [
    "# 11.0 Predict on test / hold-out Sample"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Bqznw_2efuPB"
   },
   "source": [
    "Before finalizing the model, it is advisable to perform one final check by predicting the test/hold-out set and reviewing the evaluation metrics. If you look at the information grid in Section 6 above, you will see that 30% (41 samples) of the data has been separated out as a test/hold-out sample. All of the evaluation metrics we have seen above are cross validated results based on the training set (70%) only. Now, using our final trained model stored in the `tuned_knn` variable we will predict against the hold-out sample and evaluate the metrics to see if they are materially different than the CV results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 80
    },
    "colab_type": "code",
    "id": "8handW2hfuPD",
    "outputId": "b654968b-faec-4ce4-ff3b-338e263c2ceb"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Model</th>\n",
       "      <th>Accuracy</th>\n",
       "      <th>AUC</th>\n",
       "      <th>Recall</th>\n",
       "      <th>Prec.</th>\n",
       "      <th>F1</th>\n",
       "      <th>Kappa</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>One Vs Rest Classifier</td>\n",
       "      <td>0.9512</td>\n",
       "      <td>0</td>\n",
       "      <td>0.9505</td>\n",
       "      <td>0.9512</td>\n",
       "      <td>0.9512</td>\n",
       "      <td>0.9268</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    Model  Accuracy  AUC  Recall   Prec.      F1   Kappa\n",
       "0  One Vs Rest Classifier    0.9512    0  0.9505  0.9512  0.9512  0.9268"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "predict_model(tuned_knn);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "XIM4IVWGfuPL"
   },
   "source": [
    "The accuracy on the test/hold-out set is **`0.9512`** compared to **`0.9689`** achieved on the `tuned_knn` CV results (in section 9.2 above). This is not a significant difference. If there is a large variation between the test/hold-out and CV results, then this would normally indicate over-fitting but could also be due to several other factors and would require further investigation. In this case, we will move forward with finalizing the model and predicting on unseen data (the 10% that we had separated in the beginning and never exposed to PyCaret).\n",
    "\n",
    "(TIP : It's always good to look at the standard deviation of CV results when using `create_model()`.)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "HaVz-bOIfuPN"
   },
   "source": [
    "# 12.0 Finalize Model for Deployment"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "7pRFqxXVfuPO"
   },
   "source": [
    "Model finalization is the last step in the experiment. A normal machine learning workflow in PyCaret starts with `setup()`, followed by comparing all models using `compare_models()` and shortlisting a few candidate models (based on the metric of interest) to perform several modeling techniques such as hyperparameter tuning, ensembling, stacking etc. This workflow will eventually lead you to the best model for use in making predictions on new and unseen data. The `finalize_model()` function fits the model onto the complete dataset including the test/hold-out sample (30% in this case). The purpose of this function is to train the model on the complete dataset before it is deployed in production."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "oIOJaUkEfuPP"
   },
   "outputs": [],
   "source": [
    "final_knn = finalize_model(tuned_knn)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 136
    },
    "colab_type": "code",
    "id": "tyo7534XfuPV",
    "outputId": "c4562eb1-07ac-4c3b-b56d-4f7ae25d929a"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "OneVsRestClassifier(estimator=KNeighborsClassifier(algorithm='auto',\n",
      "                                                   leaf_size=30,\n",
      "                                                   metric='euclidean',\n",
      "                                                   metric_params=None,\n",
      "                                                   n_jobs=None, n_neighbors=10,\n",
      "                                                   p=2, weights='distance'),\n",
      "                    n_jobs=None)\n"
     ]
    }
   ],
   "source": [
    "#Final K Nearest Neighbour parameters for deployment\n",
    "print(final_knn)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "ldGFfl5OfuPd"
   },
   "source": [
    "**Caution:** One final word of caution. Once the model is finalized using `finalize_model()`, the entire dataset including the test/hold-out set is used for training. As such, if the model is used for predictions on the hold-out set after `finalize_model()` is used, the information grid printed will be misleading as you are trying to predict on the same data that was used for modeling. In order to demonstrate this point only, we will use `final_knn` under `predict_model()` to compare the information grid with the one above in section 11. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 80
    },
    "colab_type": "code",
    "id": "_xO3llHefuPf",
    "outputId": "aa117963-63d5-4302-ceec-6ee54b2c57bf"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Model</th>\n",
       "      <th>Accuracy</th>\n",
       "      <th>AUC</th>\n",
       "      <th>Recall</th>\n",
       "      <th>Prec.</th>\n",
       "      <th>F1</th>\n",
       "      <th>Kappa</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>One Vs Rest Classifier</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    Model  Accuracy  AUC  Recall  Prec.   F1  Kappa\n",
       "0  One Vs Rest Classifier       1.0    0     1.0    1.0  1.0    1.0"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "predict_model(final_knn);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "bgx8z5KifuPj"
   },
   "source": [
    "Notice that all of the metrics for `final_knn` are now set to a perfect `1.000`. This is because the `final_knn` variable is trained on the complete dataset including the test/hold-out set."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "da2mWvRefuPk"
   },
   "source": [
    "# 13.0 Predict on unseen data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "BAAHbcnVfuPl"
   },
   "source": [
    "The `predict_model()` function is also used to predict on the unseen dataset. The only difference from section 11 above is that this time we will pass the `data_unseen` parameter. `data_unseen` is the variable created at the beginning of the tutorial and contains 10% (15 samples) of the original dataset which was never exposed to PyCaret. (see section 5 for explanation)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 204
    },
    "colab_type": "code",
    "id": "rvL8lBlAfuPn",
    "outputId": "a6d8a475-6c99-4baf-a900-ac8d7c6468b0"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal_length</th>\n",
       "      <th>sepal_width</th>\n",
       "      <th>petal_length</th>\n",
       "      <th>petal_width</th>\n",
       "      <th>species</th>\n",
       "      <th>Label</th>\n",
       "      <th>Score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>7.7</td>\n",
       "      <td>3.0</td>\n",
       "      <td>6.1</td>\n",
       "      <td>2.3</td>\n",
       "      <td>Iris-virginica</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>6.3</td>\n",
       "      <td>3.4</td>\n",
       "      <td>5.6</td>\n",
       "      <td>2.4</td>\n",
       "      <td>Iris-virginica</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>6.4</td>\n",
       "      <td>3.1</td>\n",
       "      <td>5.5</td>\n",
       "      <td>1.8</td>\n",
       "      <td>Iris-virginica</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>4.8</td>\n",
       "      <td>1.8</td>\n",
       "      <td>Iris-virginica</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>6.9</td>\n",
       "      <td>3.1</td>\n",
       "      <td>5.4</td>\n",
       "      <td>2.1</td>\n",
       "      <td>Iris-virginica</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   sepal_length  sepal_width  petal_length  petal_width         species  \\\n",
       "0           7.7          3.0           6.1          2.3  Iris-virginica   \n",
       "1           6.3          3.4           5.6          2.4  Iris-virginica   \n",
       "2           6.4          3.1           5.5          1.8  Iris-virginica   \n",
       "3           6.0          3.0           4.8          1.8  Iris-virginica   \n",
       "4           6.9          3.1           5.4          2.1  Iris-virginica   \n",
       "\n",
       "   Label  Score  \n",
       "0      2    1.0  \n",
       "1      2    1.0  \n",
       "2      2    1.0  \n",
       "3      2    1.0  \n",
       "4      2    1.0  "
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "unseen_predictions = predict_model(final_knn, data=data_unseen)\n",
    "unseen_predictions.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "LKi7aVcJfuPr"
   },
   "source": [
    "The `Label` and `Score` columns are added onto the `data_unseen` set. Label is the prediction and score is the probability of the prediction. Notice that predicted results are concatenated to the original dataset while all the transformations are automatically performed in the background."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "uAhEcJnqfuPs"
   },
   "source": [
    "# 14.0 Saving the model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "vENiYvosfuPt"
   },
   "source": [
    "We have now finished the experiment by finalizing the `tuned_knn` model which is now stored in the `final_knn` variable. We have also used the model stored in `final_knn` to predict `data_unseen`. This brings us to the end of our experiment, but one question is still to be asked: What happens when you have more new data to predict? Do you have to go through the entire experiment again? The answer is no, PyCaret's inbuilt function `save_model()` allows you to save the model along with entire transformation pipeline for later use."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "2UL0UC7UfuPu",
    "outputId": "003611da-e34b-4de1-d251-94e633323ee7"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Transformation Pipeline and Model Succesfully Saved\n"
     ]
    }
   ],
   "source": [
    "save_model(final_knn,'Final KNN Model 08Feb2020')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Gt94CUaXfuPz"
   },
   "source": [
    "(TIP : It's always good to use date in the filename when saving models, it's good for version control.)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "uVFI4If3fuP1"
   },
   "source": [
    "# 15.0 Loading the saved model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "7eHcdfrRfuP3"
   },
   "source": [
    "To load a saved model at a future date in the same or an alternative environment, we would use PyCaret's `load_model()` function and then easily apply the saved model on new unseen data for prediction."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "8ThDTvUifuP6",
    "outputId": "c599c153-1079-477c-a8d7-66cc846fc0c2"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Transformation Pipeline and Model Sucessfully Loaded\n"
     ]
    }
   ],
   "source": [
    "saved_final_knn = load_model('Final KNN Model 08Feb2020')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "7bo2xBltfuQC"
   },
   "source": [
    "Once the model is loaded in the environment, you can simply use it to predict on any new data using the same `predict_model()` function. Below we have applied the loaded model to predict the same `data_unseen` that we used in section 13 above."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "bcPp5zcjfuQD"
   },
   "outputs": [],
   "source": [
    "new_prediction = predict_model(saved_final_knn, data=data_unseen)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 204
    },
    "colab_type": "code",
    "id": "NYhNg8RyfuQM",
    "outputId": "05ff52a7-a98a-4d45-f2b7-75d3186785ce"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal_length</th>\n",
       "      <th>sepal_width</th>\n",
       "      <th>petal_length</th>\n",
       "      <th>petal_width</th>\n",
       "      <th>species</th>\n",
       "      <th>Label</th>\n",
       "      <th>Score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>7.7</td>\n",
       "      <td>3.0</td>\n",
       "      <td>6.1</td>\n",
       "      <td>2.3</td>\n",
       "      <td>Iris-virginica</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>6.3</td>\n",
       "      <td>3.4</td>\n",
       "      <td>5.6</td>\n",
       "      <td>2.4</td>\n",
       "      <td>Iris-virginica</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>6.4</td>\n",
       "      <td>3.1</td>\n",
       "      <td>5.5</td>\n",
       "      <td>1.8</td>\n",
       "      <td>Iris-virginica</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>4.8</td>\n",
       "      <td>1.8</td>\n",
       "      <td>Iris-virginica</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>6.9</td>\n",
       "      <td>3.1</td>\n",
       "      <td>5.4</td>\n",
       "      <td>2.1</td>\n",
       "      <td>Iris-virginica</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   sepal_length  sepal_width  petal_length  petal_width         species  \\\n",
       "0           7.7          3.0           6.1          2.3  Iris-virginica   \n",
       "1           6.3          3.4           5.6          2.4  Iris-virginica   \n",
       "2           6.4          3.1           5.5          1.8  Iris-virginica   \n",
       "3           6.0          3.0           4.8          1.8  Iris-virginica   \n",
       "4           6.9          3.1           5.4          2.1  Iris-virginica   \n",
       "\n",
       "   Label  Score  \n",
       "0      2    1.0  \n",
       "1      2    1.0  \n",
       "2      2    1.0  \n",
       "3      2    1.0  \n",
       "4      2    1.0  "
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_prediction.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Kp_XadZRfuQQ"
   },
   "source": [
    "Notice that the results of `unseen_predictions` and `new_prediction` are identical."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "9_gIC-mSfuQR"
   },
   "source": [
    "# 16.0 Wrap-up / Next Steps?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Rn_0E7H0fuQU"
   },
   "source": [
    "This tutorial has covered the entire machine learning pipeline from data ingestion, pre-processing, training the model, hyperparameter tuning, prediction and saving the model for later use. We have completed all of these steps in less than 10 commands which are naturally constructed and very intuitive to remember such as `create_model()`, `tune_model()`, `compare_models()`. Re-creating the entire experiment without PyCaret would have taken well over 100 lines of code in most libraries.\n",
    "\n",
    "We have only covered the basics of `pycaret.classification`. In following tutorials we will go deeper into advanced pre-processing, ensembling, generalized stacking and other techniques that allow you to fully customize your machine learning pipeline and are must know for any data scientist. "
   ]
  }
 ],
 "metadata": {
  "colab": {
   "collapsed_sections": [
    "e-NQVSpIfuMi",
    "QXG8qOz5fuM3",
    "i9ZvVSDYfuNL",
    "qH7AeJqjfuNX",
    "yyApyoXbfuNZ",
    "PhHDTJYwfuNl",
    "8IA_BtchfuNt",
    "jzY5pn-OfuN4",
    "WVgKXyjdfuN7",
    "fe9QKCZ8fuOU",
    "oF2hDwoifuOd",
    "3zct2zSYfuOl",
    "AegNi_BXfuOn",
    "WdQqEtO4fuOt",
    "iidIhDUufuOx",
    "Wo-Ob7AffuO_",
    "HaVz-bOIfuPN",
    "da2mWvRefuPk",
    "uAhEcJnqfuPs",
    "uVFI4If3fuP1",
    "9_gIC-mSfuQR"
   ],
   "name": "Multiclass Classification Tutorial (MCLF101) - Level Beginner (ACN_EDITS).ipynb",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "08ddc7a42f8d492faa945a5d7eac4a86": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "IntProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "IntProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "",
      "description": "Processing: ",
      "description_tooltip": null,
      "layout": "IPY_MODEL_6e43059d835f4d62aa1e5c5bf7d676e1",
      "max": 5,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_0a1412c6e3f6498ca9d221f259716943",
      "value": 5
     }
    },
    "094d443554a84f2788d4802512cda617": {
     "model_module": "@jupyter-widgets/base",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "0a1412c6e3f6498ca9d221f259716943": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "0a505068ebbf4d068aa7d75f702ac715": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "0dc3288edbff469189f52ebf88863853": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "17810a03d1424e729b70ec2044e9e7f6": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "17f607299eaf4b05a1542960ba1f8953": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "ToggleButtonsStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ToggleButtonsStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "button_width": "",
      "description_width": "",
      "font_weight": ""
     }
    },
    "2c22eeecfa054ab59f5a2bc6ea4e7244": {
     "model_module": "@jupyter-widgets/base",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "2d502879922046aaba1d84769e93ff1b": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "IntProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "IntProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "",
      "description": "Processing: ",
      "description_tooltip": null,
      "layout": "IPY_MODEL_d360dbb5ee734c839b8a30238d824633",
      "max": 5,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_0dc3288edbff469189f52ebf88863853",
      "value": 5
     }
    },
    "36a827017abf468d939c97492b5c73ab": {
     "model_module": "@jupyter-widgets/output",
     "model_name": "OutputModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/output",
      "_model_module_version": "1.0.0",
      "_model_name": "OutputModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/output",
      "_view_module_version": "1.0.0",
      "_view_name": "OutputView",
      "layout": "IPY_MODEL_8d00ff3d9987467db4b233132c5a3499",
      "msg_id": "",
      "outputs": [
       {
        "image/png": "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\n",
        "metadata": {
         "tags": []
        },
        "output_type": "display_data",
        "text/plain": "<Figure size 576x396 with 1 Axes>"
       }
      ]
     }
    },
    "3dd8046812e942bf9e2ccc62ba4bf2a5": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "IntProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "IntProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "",
      "description": "Processing: ",
      "description_tooltip": null,
      "layout": "IPY_MODEL_2c22eeecfa054ab59f5a2bc6ea4e7244",
      "max": 5,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_a4291bb80392498ba074a033b6c60d86",
      "value": 5
     }
    },
    "46eb9473b4c64c59956eae387e60555a": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "IntProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "IntProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "",
      "description": "Processing: ",
      "description_tooltip": null,
      "layout": "IPY_MODEL_4e0a64915ccd490aae253c73dbf91a99",
      "max": 5,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_eecbd2ce9de64166bcfddadaef395d65",
      "value": 5
     }
    },
    "4c1ee7022483425d9541b0e49f1efcd2": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "IntProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "IntProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "",
      "description": "Processing: ",
      "description_tooltip": null,
      "layout": "IPY_MODEL_9d7425bc499c4f57a680a7166389e5dc",
      "max": 5,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_17810a03d1424e729b70ec2044e9e7f6",
      "value": 5
     }
    },
    "4e0a64915ccd490aae253c73dbf91a99": {
     "model_module": "@jupyter-widgets/base",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "52e6b5978ec94fdabdc9adf9286c3078": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "57e3592dda974775b2fc52ee73ecb50c": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "66b421a890bc462b97e5d9d23fe5809a": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "IntProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "IntProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "",
      "description": "Processing: ",
      "description_tooltip": null,
      "layout": "IPY_MODEL_d8e230198678421ea3afef9ca721090d",
      "max": 5,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_904ec053638f498aa1d0e4944145f736",
      "value": 5
     }
    },
    "6e43059d835f4d62aa1e5c5bf7d676e1": {
     "model_module": "@jupyter-widgets/base",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "7448bcccbfaa432c8f1f9936a51ccf3c": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "904ec053638f498aa1d0e4944145f736": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "9cc0efb4189e48c6beb4fe1c0c4a2fdc": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "VBoxModel",
     "state": {
      "_dom_classes": [
       "widget-interact"
      ],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "VBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "VBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_b046e2e525ca425a80aac86d7b665854",
       "IPY_MODEL_36a827017abf468d939c97492b5c73ab"
      ],
      "layout": "IPY_MODEL_a63ed06ee88c4ca3883ac38e665bddf8"
     }
    },
    "9d7425bc499c4f57a680a7166389e5dc": {
     "model_module": "@jupyter-widgets/base",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "a1a8e8de38404b83bec2300554e42aa8": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "IntProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "IntProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "",
      "description": "Processing: ",
      "description_tooltip": null,
      "layout": "IPY_MODEL_eae1b12ae33041e9a14d7372fd0d6be3",
      "max": 5,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_7448bcccbfaa432c8f1f9936a51ccf3c",
      "value": 5
     }
    },
    "a4291bb80392498ba074a033b6c60d86": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "a63ed06ee88c4ca3883ac38e665bddf8": {
     "model_module": "@jupyter-widgets/base",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "b046e2e525ca425a80aac86d7b665854": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "ToggleButtonsModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ToggleButtonsModel",
      "_options_labels": [
       "Hyperparameters",
       "AUC",
       "Confusion Matrix",
       "Threshold",
       "Precision Recall",
       "Error",
       "Class Report",
       "Feature Selection",
       "Learning Curve",
       "Manifold Learning",
       "Calibration Curve",
       "Validation Curve",
       "Dimensions",
       "Feature Importance",
       "Decision Boundary"
      ],
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ToggleButtonsView",
      "button_style": "",
      "description": "Plot Type:",
      "description_tooltip": null,
      "disabled": false,
      "icons": [
       ""
      ],
      "index": 14,
      "layout": "IPY_MODEL_e4c7bdc3be744945b405b9905048f64f",
      "style": "IPY_MODEL_17f607299eaf4b05a1542960ba1f8953",
      "tooltips": []
     }
    },
    "bdb566b147ef4202b351fd1014883ce6": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "IntProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "IntProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "",
      "description": "Processing: ",
      "description_tooltip": null,
      "layout": "IPY_MODEL_094d443554a84f2788d4802512cda617",
      "max": 5,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_0a505068ebbf4d068aa7d75f702ac715",
      "value": 2
     }
    },
    "c20470f03116445ab707f5857592d046": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "IntProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "IntProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "",
      "description": "Processing: ",
      "description_tooltip": null,
      "layout": "IPY_MODEL_d0366972e1664000b72674d0a285a785",
      "max": 5,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_52e6b5978ec94fdabdc9adf9286c3078",
      "value": 5
     }
    },
    "cc64cb2f6f8148d7ad9ce9d9cd16dd5f": {
     "model_module": "@jupyter-widgets/base",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "d0366972e1664000b72674d0a285a785": {
     "model_module": "@jupyter-widgets/base",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "d360dbb5ee734c839b8a30238d824633": {
     "model_module": "@jupyter-widgets/base",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "d8e230198678421ea3afef9ca721090d": {
     "model_module": "@jupyter-widgets/base",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "e4c7bdc3be744945b405b9905048f64f": {
     "model_module": "@jupyter-widgets/base",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "eae1b12ae33041e9a14d7372fd0d6be3": {
     "model_module": "@jupyter-widgets/base",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "eecbd2ce9de64166bcfddadaef395d65": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "f0c4a07ca3cf4460bed061f0609b9b2b": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "IntProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "IntProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "",
      "description": "Processing: ",
      "description_tooltip": null,
      "layout": "IPY_MODEL_cc64cb2f6f8148d7ad9ce9d9cd16dd5f",
      "max": 5,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_57e3592dda974775b2fc52ee73ecb50c",
      "value": 2
     }
    }
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
